diff --git a/mapea-js/package.json b/mapea-js/package.json index f66c8bee6..e387ba495 100644 --- a/mapea-js/package.json +++ b/mapea-js/package.json @@ -1,6 +1,6 @@ { "name": "mapea", - "version": "6.2.0", + "version": "6.3.0", "description": "Herramienta para desarrollo de mapas interactivos de forma sencilla", "keywords": [ "map", @@ -65,7 +65,7 @@ "handlebars": "4.5.2", "jsdoc": "^3.6.4", "jsts": "^2.0.2", - "ol": "6.14.1", + "ol": "6.15.1", "proj4": "^2.4.4" }, "scripts": { diff --git a/mapea-js/pom.xml b/mapea-js/pom.xml index 6de1447c0..eaed77693 100644 --- a/mapea-js/pom.xml +++ b/mapea-js/pom.xml @@ -6,7 +6,7 @@ es.juntadeandalucia.mapea mapea-parent - 6.2.0 + 6.3.0 ../mapea-parent/pom.xml diff --git a/mapea-js/src/configuration.js b/mapea-js/src/configuration.js index 11a3bd091..5991d7460 100644 --- a/mapea-js/src/configuration.js +++ b/mapea-js/src/configuration.js @@ -19,7 +19,7 @@ * @public * @api stable */ - M.config('MAPEA_URL', location.protocol + '${mapea.url}'); + M.config('MAPEA_URL', '${mapea.url}'); /** * The path to the Mapea proxy to send @@ -29,7 +29,7 @@ * @public * @api stable */ - M.config('PROXY_URL', location.protocol + '${mapea.proxy.url}'); + M.config('PROXY_URL', '${mapea.proxy.url}'); /** * The path to the Mapea proxy to send @@ -39,7 +39,7 @@ * @public * @api stable */ - M.config('PROXY_POST_URL', location.protocol + '${mapea.proxy_post.url}'); + M.config('PROXY_POST_URL', '${mapea.proxy_post.url}'); /** * The path to the Mapea templates @@ -57,7 +57,7 @@ * @public * @api stable */ - M.config('THEME_URL', location.protocol + '${mapea.theme.url}'); + M.config('THEME_URL', '${mapea.theme.url}'); /** * The Geosearch URL @@ -66,7 +66,7 @@ * @public * @api stable */ - M.config('GEOSEARCH_URL', location.protocol + '${geosearch.url}'); + M.config('GEOSEARCH_URL', '${geosearch.url}'); /** * The Geosearch core @@ -137,7 +137,7 @@ * @public * @api stable */ - 'urls': '${wmc.urls}'.split(',').map(e => location.protocol + e), + 'urls': '${wmc.urls}'.split(',').map(e => e), /** * WMC predefined names @@ -181,7 +181,7 @@ * @public * @api stable */ - 'tiledUrls': '${tile.mappings.tiledUrls}'.split(',').map(e => location.protocol + e), + 'tiledUrls': '${tile.mappings.tiledUrls}'.split(',').map(e => e), /** * WMC context names @@ -199,7 +199,7 @@ * @public * @api stable */ - 'urls': '${tile.mappings.urls}'.split(',').map(e => location.protocol + e) + 'urls': '${tile.mappings.urls}'.split(',').map(e => e) }); /** @@ -226,7 +226,7 @@ * @public * @api stable */ - 'URL': location.protocol + '${geoprint.url}', + 'URL': '${geoprint.url}', /** * WMC predefined names @@ -288,7 +288,7 @@ * @public * @api stable */ - 'URL': location.protocol + '${geoprint2.url}', + 'URL': '${geoprint2.url}', /** * Printer service URL @@ -297,7 +297,7 @@ * @public * @api stable */ - 'URL_APPLICATION': location.protocol + '${geoprint.url_application}', + 'URL_APPLICATION': '${geoprint.url_application}', }); /** @@ -334,7 +334,7 @@ * @public * @api stable */ - M.config('SEARCHSTREET_URL', location.protocol + '${searchstreet.url}'); + M.config('SEARCHSTREET_URL', '${searchstreet.url}'); /** * Autocomplete municipality service URL @@ -343,7 +343,7 @@ * @public * @api stable */ - M.config('SEARCHSTREET_URLCODINEAUTOCOMPLETE', location.protocol + '${searchstreet.urlcodineautocomplete}'); + M.config('SEARCHSTREET_URLCODINEAUTOCOMPLETE', '${searchstreet.urlcodineautocomplete}'); /** * service URL check code INE @@ -352,7 +352,7 @@ * @public * @api stable */ - M.config('SEARCHSTREET_URLCOMPROBARINE', location.protocol + '${searchstreet.urlcomprobarine}'); + M.config('SEARCHSTREET_URLCOMPROBARINE', '${searchstreet.urlcomprobarine}'); /** * Normalizar searchstreet service URL @@ -361,7 +361,7 @@ * @public * @api stable */ - M.config('SEARCHSTREET_NORMALIZAR', location.protocol + '${searchstreet.normalizar}'); + M.config('SEARCHSTREET_NORMALIZAR', '${searchstreet.normalizar}'); /** * Minimum number of characters to start autocomplete diff --git a/mapea-js/src/facade/js/Map.js b/mapea-js/src/facade/js/Map.js index 32038a6e6..bbd491e5c 100644 --- a/mapea-js/src/facade/js/Map.js +++ b/mapea-js/src/facade/js/Map.js @@ -14,6 +14,7 @@ import { isObject, getEnvolvedExtent, generateResolutionsFromExtent, + getResolutionFromScale, } from './util/Utils.js'; import { getValue } from './i18n/language'; import Exception from './exception/exception'; @@ -26,6 +27,7 @@ import FeaturesHandler from './handler/Feature.js'; import Feature from './feature/Feature.js'; import * as Dialog from './dialog'; import GetFeatureInfo from './control/GetFeatureInfo.js'; +import Layerswitcher from './control/Layerswitcher.js'; import WMCSelector from './control/WMCSelector.js'; import Layer from './layer/Layer.js'; import * as LayerType from './layer/Type.js'; @@ -293,6 +295,16 @@ class Map extends Base { } } + // layerswitcher + if (!isUndefined(params.layerswitcher)) { + if (params.layerswitcher !== 'emptylayer' && params.layerswitcher !== '') { + Dialog.error(getValue('layerswitcher').unsupported_param); + } else { + const layerswitcher = new Layerswitcher(params.layerswitcher); + this.addControls(layerswitcher); + } + } + // default WMC if (isNullOrEmpty(params.wmc) && isNullOrEmpty(params.layers)) { this.addWMC(M.config.predefinedWMC.predefinedNames[0]); @@ -1956,6 +1968,32 @@ class Map extends Base { return this; } + /** + * This function adds plugins + * + * @public + * @function + * @param {Array} plugins plugins to add to the map + * @returns {Map} + * @api + */ + addPlugins(plugins) { + // checks if the param is null or empty + if (isNullOrEmpty(plugins)) { + Exception(getValue('exception').no_plugins); + } + let allPlugins = plugins; + if (!isArray(plugins)) { + allPlugins = [plugins]; + } + + allPlugins.forEach((plugin) => { + this.addPlugin(plugin); + }); + + return this; + } + /** * This function removes the specified plugins from the map * @@ -2753,6 +2791,19 @@ class Map extends Base { getImageMap() { return this.getImpl().getImageMap(); } + + /** + * This function set scale to map + * + * @function + * @public + * @param { Number } + * @api + */ + setToClosestScale(scale) { + const resolution = getResolutionFromScale(scale, this.getProjection().units); + this.getImpl().setToClosestScale(resolution); + } } /** diff --git a/mapea-js/src/facade/js/control/Layerswitcher.js b/mapea-js/src/facade/js/control/Layerswitcher.js index 8db57ff46..84b14af33 100644 --- a/mapea-js/src/facade/js/control/Layerswitcher.js +++ b/mapea-js/src/facade/js/control/Layerswitcher.js @@ -31,15 +31,21 @@ class LayerSwitcher extends ControlBase { * @extends {M.Control} * @api */ - constructor() { + constructor(emptyLayer) { // implementation of this control - const impl = new LayerSwitcherImpl(); + const impl = new LayerSwitcherImpl(emptyLayer); // calls the super constructor super(impl, LayerSwitcher.NAME); if (isUndefined(LayerSwitcherImpl)) { Exception(getValue('exception').layerswitcher_method); } + + if (!isUndefined(emptyLayer) && emptyLayer !== '') { + this.activeEmptyLayer = true; + } else { + this.activeEmptyLayer = false; + } } /** @@ -68,6 +74,9 @@ class LayerSwitcher extends ControlBase { createView(map) { return new Promise((resolve) => { LayerSwitcher.getTemplateVariables(this.map_).then((templateVars) => { + if (this.activeEmptyLayer) { + templateVars.baseLayers.unshift(LayerSwitcher.EMPTYLAYER); + } const html = compileTemplate(layerswitcherTemplate, { vars: templateVars, }); @@ -185,7 +194,7 @@ class LayerSwitcher extends ControlBase { const layerVarTemplate = { base: (layer.transparent === false), visible: (layer.isVisible() === true), - id: layer.name, + id: layer.id, title: layerTitle, outOfRange: !layer.inRange(), opacity: layer.getOpacity(), @@ -297,4 +306,22 @@ class LayerSwitcher extends ControlBase { */ LayerSwitcher.NAME = 'layerswitcher'; +/** + * Empty layer + * @const + * @type {Object} + * @public + * @api + */ +LayerSwitcher.EMPTYLAYER = { + base: true, + id: 'emptyLayer', + isIcon: false, + legend: '', + opacity: 1, + outOfRange: false, + title: getValue('layerswitcher').no_base_layer, + visible: false, +}; + export default LayerSwitcher; diff --git a/mapea-js/src/facade/js/handler/Feature.js b/mapea-js/src/facade/js/handler/Feature.js index ce508ea17..f5a81aec7 100644 --- a/mapea-js/src/facade/js/handler/Feature.js +++ b/mapea-js/src/facade/js/handler/Feature.js @@ -87,6 +87,25 @@ class Features extends Base { this.fire(EventType.ADDED_TO_MAP); } + /** + * This function modifies the objects a and b after changing the ID of the layer + * + * @public + * @function + * @param {Number} id ID layer + * @param {Number} newID New ID layer + * @api + * @export + */ + changeNamePrevs(id, newID) { + const prevHF = this.prevHoverFeatures_[id]; + const prevSF = this.prevSelectedFeatures_[id]; + this.prevHoverFeatures_[newID] = prevHF; + this.prevSelectedFeatures_[newID] = prevSF; + delete this.prevHoverFeatures_[id]; + delete this.prevSelectedFeatures_[id]; + } + /** * TODO * @@ -100,7 +119,7 @@ class Features extends Base { this.map_.removePopup(); this.layers_.forEach((layer) => { const clickedFeatures = impl.getFeaturesByLayer(evt, layer); - const prevFeatures = [...(this.prevSelectedFeatures_[layer.name])]; + const prevFeatures = [...(this.prevSelectedFeatures_[layer.id])]; // no features selected then unselect prev selected features if (clickedFeatures.length === 0 && prevFeatures.length > 0) { this.unselectFeatures(prevFeatures, layer, evt); @@ -132,7 +151,7 @@ class Features extends Base { this.layers_.forEach((layer) => { const hoveredFeatures = impl.getFeaturesByLayer(evt, layer); - const prevFeatures = [...this.prevHoverFeatures_[layer.name]]; + const prevFeatures = [...this.prevHoverFeatures_[layer.id]]; // no features selected then unselect prev selected features if (hoveredFeatures.length === 0 && prevFeatures.length > 0) { this.leaveFeatures_(prevFeatures, layer, evt); @@ -162,7 +181,7 @@ class Features extends Base { * @api */ selectFeatures(features, layer, evt) { - this.prevSelectedFeatures_[layer.name] = this.prevSelectedFeatures_[layer.name] + this.prevSelectedFeatures_[layer.id] = this.prevSelectedFeatures_[layer.id] .concat(features); const layerImpl = layer.getImpl(); if (isFunction(layerImpl.selectFeatures)) { @@ -180,8 +199,8 @@ class Features extends Base { */ unselectFeatures(features, layer, evt) { // removes unselected features - this.prevSelectedFeatures_[layer.name] = - this.prevSelectedFeatures_[layer.name].filter(pf => !features.some(f => f.equals(pf))); + this.prevSelectedFeatures_[layer.id] = + this.prevSelectedFeatures_[layer.id].filter(pf => !features.some(f => f.equals(pf))); const layerImpl = layer.getImpl(); if (isFunction(layerImpl.unselectFeatures)) { layerImpl.unselectFeatures(features, evt.coord); @@ -197,7 +216,7 @@ class Features extends Base { * @api */ hoverFeatures_(features, layer, evt) { - this.prevHoverFeatures_[layer.name] = this.prevHoverFeatures_[layer.name].concat(features); + this.prevHoverFeatures_[layer.id] = this.prevHoverFeatures_[layer.id].concat(features); layer.fire(EventType.HOVER_FEATURES, [features, evt]); this.getImpl().addCursorPointer(); } @@ -210,8 +229,8 @@ class Features extends Base { * @api */ leaveFeatures_(features, layer, evt) { - this.prevHoverFeatures_[layer.name] = - this.prevHoverFeatures_[layer.name].filter(pf => !features.some(f => f.equals(pf))); + this.prevHoverFeatures_[layer.id] = + this.prevHoverFeatures_[layer.id].filter(pf => !features.some(f => f.equals(pf))); layer.fire(EventType.LEAVE_FEATURES, [features, evt.coord]); this.getImpl().removeCursorPointer(); } @@ -258,8 +277,8 @@ class Features extends Base { addLayer(layer) { if (!includes(this.layers_, layer)) { this.layers_.push(layer); - this.prevSelectedFeatures_[layer.name] = []; - this.prevHoverFeatures_[layer.name] = []; + this.prevSelectedFeatures_[layer.id] = []; + this.prevHoverFeatures_[layer.id] = []; } } @@ -274,10 +293,10 @@ class Features extends Base { */ removeLayer(layer) { this.layers_ = this.layers_.filter(layer2 => !layer2.equals(layer)); - this.prevSelectedFeatures_[layer.name] = null; - this.prevHoverFeatures_[layer.name] = null; - delete this.prevSelectedFeatures_[layer.name]; - delete this.prevHoverFeatures_[layer.name]; + this.prevSelectedFeatures_[layer.id] = null; + this.prevHoverFeatures_[layer.id] = null; + delete this.prevSelectedFeatures_[layer.id]; + delete this.prevHoverFeatures_[layer.id]; } /** diff --git a/mapea-js/src/facade/js/i18n/en.json b/mapea-js/src/facade/js/i18n/en.json index 2968f6f7c..78d82e5d6 100644 --- a/mapea-js/src/facade/js/i18n/en.json +++ b/mapea-js/src/facade/js/i18n/en.json @@ -3,7 +3,9 @@ "title": "Get current location" }, "layerswitcher": { - "title": "Layer selector" + "title": "Layer selector", + "unsupported_param": "Unsupported parameter", + "no_base_layer": "Without base layer" }, "scale": { "title": "Scale", @@ -145,6 +147,7 @@ "max_lt_min": "A maximum radius of less than the minimum can not be established.", "no_geojson": "No GeoJSON has been specified", "unsupported_lang": "A language without support has been established", - "generate_image": "An error occurred while generating the image" + "generate_image": "An error occurred while generating the image", + "id_exists": "ID already exists" } } diff --git a/mapea-js/src/facade/js/i18n/es.json b/mapea-js/src/facade/js/i18n/es.json index 7a6fda480..3822af00d 100644 --- a/mapea-js/src/facade/js/i18n/es.json +++ b/mapea-js/src/facade/js/i18n/es.json @@ -3,7 +3,9 @@ "title": "Obtener ubicación actual" }, "layerswitcher": { - "title": "Selector de capas" + "title": "Selector de capas", + "unsupported_param": "Parámetro no soportado", + "no_base_layer": "Sin capa base" }, "scale": { "title": "Escala", @@ -145,6 +147,7 @@ "max_lt_min": "No puede establecerse un radio máximo menor que el mínimo.", "no_geojson": "No se ha especificado ningun GeoJSON", "unsupported_lang": "Se ha establecido un idioma sin soporte", - "generate_image": "Se ha producido un error al generar la imagen" + "generate_image": "Se ha producido un error al generar la imagen", + "id_exists": "El ID indicado ya existe" } } diff --git a/mapea-js/src/facade/js/layer/GeoJSON.js b/mapea-js/src/facade/js/layer/GeoJSON.js index e9d273433..649b675fa 100644 --- a/mapea-js/src/facade/js/layer/GeoJSON.js +++ b/mapea-js/src/facade/js/layer/GeoJSON.js @@ -121,6 +121,7 @@ class GeoJSON extends LayerVector { if (obj instanceof GeoJSON) { equals = this.name === obj.name; equals = equals && (this.extract === obj.extract); + equals = equals && (this.id === obj.id); } return equals; diff --git a/mapea-js/src/facade/js/layer/KML.js b/mapea-js/src/facade/js/layer/KML.js index 91e7ee2bb..423321ae6 100644 --- a/mapea-js/src/facade/js/layer/KML.js +++ b/mapea-js/src/facade/js/layer/KML.js @@ -124,6 +124,7 @@ class KML extends LayerVector { equals = (this.url === obj.url); equals = equals && (this.name === obj.name); equals = equals && (this.extract === obj.extract); + equals = equals && (this.id === obj.id); } return equals; diff --git a/mapea-js/src/facade/js/layer/Layer.js b/mapea-js/src/facade/js/layer/Layer.js index 1a727be9a..a07de3cdb 100644 --- a/mapea-js/src/facade/js/layer/Layer.js +++ b/mapea-js/src/facade/js/layer/Layer.js @@ -114,6 +114,13 @@ class LayerBase extends Base { * @api */ this.layerGroup_ = null; + + /** + * ID Layer + * @public + * @api + */ + this.id = generateRandom(`${parameter.name}_`); } /** @@ -136,6 +143,42 @@ class LayerBase extends Base { this.getImpl().legend = newLegend; } + /** + * Returns the ID + * @function + * @api + * @return {Number} The legend of the layer. + */ + getID() { + return this.id; + } + + /** + * Sets the ID value + * @param {Number} newID - The new ID + */ + setId(newID) { + if (!isNullOrEmpty(this.map_)) { + const findId = this.map_.getLayers().find((layer) => { + let result = null; + if (layer.constructor.name === 'WMC') { + result = layer.layers.find((layerwmc) => { + return layer.id === newID; + }); + } else { + result = layer.id === newID; + } + return result; + }); + if (isUndefined(findId)) { + this.map_.getFeatureHandler().changeNamePrevs(this.id, newID); + this.id = newID; + } else { + Exception(getValue('exception').id_exists); + } + } + } + /** * Returns the service URL of the layer * @return {string} Service URL of the layer diff --git a/mapea-js/src/facade/js/layer/Mapbox.js b/mapea-js/src/facade/js/layer/Mapbox.js index 7c79fab3d..978d327fc 100644 --- a/mapea-js/src/facade/js/layer/Mapbox.js +++ b/mapea-js/src/facade/js/layer/Mapbox.js @@ -148,6 +148,7 @@ class Mapbox extends LayerBase { equals = (this.url === obj.url); equals = equals && (this.name === obj.name); equals = equals && (this.options === obj.options); + equals = equals && (this.id === obj.id); } return equals; } diff --git a/mapea-js/src/facade/js/layer/Vector.js b/mapea-js/src/facade/js/layer/Vector.js index 17cd45b14..8b5846eb0 100644 --- a/mapea-js/src/facade/js/layer/Vector.js +++ b/mapea-js/src/facade/js/layer/Vector.js @@ -302,6 +302,7 @@ class Vector extends LayerBase { let equals = false; if (obj instanceof Vector) { equals = this.name === obj.name; + equals = equals && (this.id === obj.id); } return equals; } diff --git a/mapea-js/src/facade/js/layer/WFS.js b/mapea-js/src/facade/js/layer/WFS.js index 1a9e83956..8102678ee 100644 --- a/mapea-js/src/facade/js/layer/WFS.js +++ b/mapea-js/src/facade/js/layer/WFS.js @@ -217,6 +217,7 @@ class WFS extends Vector { equals = equals && (this.ids === obj.ids); equals = equals && (this.cql === obj.cql); equals = equals && (this.version === obj.version); + equals = equals && (this.id === obj.id); } return equals; diff --git a/mapea-js/src/facade/js/layer/WMS.js b/mapea-js/src/facade/js/layer/WMS.js index 976a9a9d5..547733f9b 100644 --- a/mapea-js/src/facade/js/layer/WMS.js +++ b/mapea-js/src/facade/js/layer/WMS.js @@ -154,7 +154,7 @@ class WMS extends LayerBase { if (!isNullOrEmpty(newVersion)) { this.getImpl().version = newVersion; } else { - this.getImpl().version = '1.1.0'; // default value + this.getImpl().version = '1.3.0'; // default value } } @@ -280,6 +280,17 @@ class WMS extends LayerBase { return this.getCapabilitiesPromise_; } + /** + * This funcion returns the URL of the legend of GetCapabilities + * + * @function + * @return {Promise} url WMS equivalen service for this layer. + * @api + */ + getLegendCapabilities() { + return this.getImpl().getLegendCapabilities(); + } + /** * If this WMS layer actually requests a tiled layer service, there may be an * equivalent WMS service which can be used for other purposes (printing, etc.) @@ -370,6 +381,7 @@ class WMS extends LayerBase { equals = equals && (this.name === obj.name); equals = equals && (this.cql === obj.cql); equals = equals && (this.version === obj.version); + equals = equals && (this.id === obj.id); } return equals; diff --git a/mapea-js/src/facade/js/layer/WMTS.js b/mapea-js/src/facade/js/layer/WMTS.js index 842e85615..1eebbf1a7 100644 --- a/mapea-js/src/facade/js/layer/WMTS.js +++ b/mapea-js/src/facade/js/layer/WMTS.js @@ -144,6 +144,7 @@ class WMTS extends LayerBase { equals = (this.url === obj.url); equals = equals && (this.name === obj.name); equals = equals && (this.matrixSet === obj.matrixSet); + equals = equals && (this.id === obj.id); } return equals; diff --git a/mapea-js/src/facade/js/parameter/Parameters.js b/mapea-js/src/facade/js/parameter/Parameters.js index 1195f6e18..3bae67f2a 100644 --- a/mapea-js/src/facade/js/parameter/Parameters.js +++ b/mapea-js/src/facade/js/parameter/Parameters.js @@ -218,6 +218,30 @@ const parseGetFeatureInfo = (parameter) => { return getFeatureInfo; }; +/** + * This function parses a controls parameter in a legible + * parameter to Mapea and checks posible errors + * + * @private + * @function + * @param {string|Mx.parameters.Map} parameter parameters + * especified by the user + * @returns {string} Active empty layer + */ +const parseLayerswitcher = (parameter) => { + let layerswitcher; + + if (isString(parameter)) { + layerswitcher = getParameterValue('layerswitcher', parameter); + } else if (isObject(parameter)) { + layerswitcher = parameter.layerswitcher; + } else { + Exception(`El tipo del parámetro controls no es válido: ${typeof parameter}`); + } + + return layerswitcher; +}; + /** * This function parses a maxExtent parameter in a legible * parameter to Mapea and checks posible errors @@ -533,6 +557,13 @@ class Parameters { */ this.getfeatureinfo = parseGetFeatureInfo(userParameters); + /** + * @public + * @type {Object} + * @api + */ + this.layerswitcher = parseLayerswitcher(userParameters); + /** * @public * @type {Object} diff --git a/mapea-js/src/facade/js/style/Category.js b/mapea-js/src/facade/js/style/Category.js index 45ba3987e..cf4b89dfa 100644 --- a/mapea-js/src/facade/js/style/Category.js +++ b/mapea-js/src/facade/js/style/Category.js @@ -207,10 +207,19 @@ class Category extends Composite { getImageSize(style.get('icon.src')).then((img) => { image.width = style.get('icon.scale') ? img.width * style.get('icon.scale') : img.width; image.height = style.get('icon.scale') ? img.height * style.get('icon.scale') : img.height; - image.src = style.toImage(); + style.toImage().then((data) => { + image.src = data; + }); }); } else { - image.src = style.toImage(); + const src = style.toImage(); + if (src instanceof Promise) { + src.then((data) => { + image.src = data; + }); + } else { + image.src = src; + } } } } @@ -314,8 +323,7 @@ class Category extends Composite { this.layer_.getFeatures().forEach((feature) => { const value = feature.getAttribute(this.attributeName_); if (!Object.prototype.hasOwnProperty.call(categories, value)) { - categories[value] = Utils.generateRandomStyle({ - feature, + categories[value] = Utils.generateRandomGenericStyle({ radius: Category.RANDOM_RADIUS_OPTION, strokeColor: Category.RANDOM_STROKE_COLOR_OPTION, strokeWidth: Category.RANDOM_STROKE_WIDTH_OPTION, diff --git a/mapea-js/src/facade/js/style/Proportional.js b/mapea-js/src/facade/js/style/Proportional.js index a1fbee1b0..a7016d929 100644 --- a/mapea-js/src/facade/js/style/Proportional.js +++ b/mapea-js/src/facade/js/style/Proportional.js @@ -182,11 +182,8 @@ class Proportional extends StyleComposite { const minMaxValues = getMinMaxValues(this.layer_.getFeatures(), this.attributeName_); [this.minValue_, this.maxValue_] = minMaxValues; this.layer_.getFeatures().forEach(feature => this.applyToFeature(feature, 1)); - let newStyle = this.oldStyle_.clone(); + const newStyle = this.oldStyle_.clone(); if (newStyle instanceof StyleSimple) { - if (!(newStyle instanceof StylePoint)) { - newStyle = new StylePoint(newStyle.getOptions()); - } newStyle.set('zindex', feature => (this.maxValue_ - parseFloat(feature.getAttribute(this.attributeName_)))); newStyle.set(Proportional.getSizeAttribute(newStyle), (feature) => { const weigh = Proportional.SCALE_PROPORTION; @@ -353,7 +350,9 @@ class Proportional extends StyleComposite { if (style instanceof StyleSimple) { let featureStyle = style.clone(); - if (!(featureStyle instanceof StylePoint)) { + if ((featureStyle instanceof StyleGeneric)) { + featureStyle = new StylePoint(featureStyle.getOptions().point); + } else if (!(featureStyle instanceof StylePoint)) { featureStyle = new StylePoint(featureStyle.getOptions()); } const sizeAttribute = Proportional.getSizeAttribute(featureStyle); @@ -501,7 +500,7 @@ class Proportional extends StyleComposite { } const radius = propFun(value, options.minValue, options.maxValue, minRadius, maxRadius); const zindex = options.maxValue - parseFloat(feature.getAttribute(this.attributeName_)); - style.set(Proportional.getSizeAttribute(style), radius); + style.set(`${Proportional.getSizeAttribute(style)}`, radius); style.set('zindex', zindex); } return style; diff --git a/mapea-js/src/facade/js/style/utils.js b/mapea-js/src/facade/js/style/utils.js index 880742f33..d528ae349 100644 --- a/mapea-js/src/facade/js/style/utils.js +++ b/mapea-js/src/facade/js/style/utils.js @@ -2,6 +2,7 @@ import chroma from 'chroma-js'; import StylePoint from '../style/Point.js'; import StyleLine from '../style/Line.js'; import StylePolygon from '../style/Polygon.js'; +import StyleGeneric from '../style/Generic.js'; /** * This functions returns random simple style @@ -67,6 +68,42 @@ const generateRandomStyle = (opts) => { return style; }; -export default { - generateRandomStyle, +const generateRandomGenericStyle = (opts) => { + const radius = opts.radius; + const fillColor = chroma.random().hex(); + const strokeColor = opts.strokeColor; + const strokeWidth = opts.strokeWidth; + const options = { + point: { + radius, + fill: { + color: fillColor, + }, + stroke: { + color: strokeColor, + width: strokeWidth, + }, + }, + line: { + fill: { + color: fillColor, + }, + stroke: { + color: strokeColor, + width: strokeWidth, + }, + }, + polygon: { + fill: { + color: fillColor, + }, + stroke: { + color: strokeColor, + width: strokeWidth, + }, + }, + }; + return new StyleGeneric(options); }; + +export default { generateRandomStyle, generateRandomGenericStyle }; diff --git a/mapea-js/src/impl/ol/Map.js b/mapea-js/src/impl/ol/Map.js index 673d8c575..66c323735 100644 --- a/mapea-js/src/impl/ol/Map.js +++ b/mapea-js/src/impl/ol/Map.js @@ -64,6 +64,7 @@ const BASE_LAYER_TYPES = [ LayerType.OSM, LayerType.Mapbox, LayerType.WMTS, + LayerType.MVT, ]; /** @@ -1333,19 +1334,29 @@ class Map extends MObject { */ addMVT(layers) { const baseLayers = this.getBaseLayers(); - const existsBaseLayer = baseLayers.length > 0; + let existsBaseLayer = baseLayers.length > 0; + const addedLayers = []; layers.forEach((layer) => { if (layer.type === LayerType.MVT) { if (!includes(this.layers_, layer)) { layer.getImpl().addTo(this.facadeMap_); this.layers_.push(layer); - layer.setZIndex(layer.getZIndex()); - if (layer.getZIndex() == null) { - const zIndex = this.layers_.length + Map.Z_INDEX[LayerType.MVT]; - layer.setZIndex(zIndex); + addedLayers.push(layer); + if (layer.transparent !== true) { + layer.setVisible(!existsBaseLayer); + existsBaseLayer = true; + layer.setZIndex(Map.Z_INDEX_BASELAYER); + } else { + layer.setZIndex(layer.getZIndex()); + if (layer.getZIndex() == null) { + const zIndex = this.layers_.length + Map.Z_INDEX[LayerType.MVT]; + layer.setZIndex(zIndex); + } } - if (!existsBaseLayer) { + const calculateResolutions = (addedLayers.length > 0 && !existsBaseLayer) || + addedLayers.some(l => l.transparent !== true && l.isVisible()); + if (calculateResolutions) { this.updateResolutionsFromBaseLayer(); } } @@ -1976,8 +1987,12 @@ class Map extends MObject { let maxResolution = null; let minResolution = null; if (!isNullOrEmpty(baseLayer)) { - minResolution = baseLayer.getImpl().getMinResolution(); - maxResolution = baseLayer.getImpl().getMaxResolution(); + minResolution = baseLayer.getImpl().getMinResolution !== undefined ? + baseLayer.getImpl().getMinResolution() : + null; + maxResolution = baseLayer.getImpl().getMaxResolution !== undefined ? + baseLayer.getImpl().getMaxResolution() : + null; zoomLevels = baseLayer.getImpl().getNumZoomLevels(); } @@ -2314,6 +2329,18 @@ class Map extends MObject { } return img; } + + /** + * This function set scale to map + * + * @function + * @public + * @api + * @param { Number } + */ + setToClosestScale(resolution) { + this.getMapImpl().getView().setResolution(resolution); + } } /** diff --git a/mapea-js/src/impl/ol/control/Layerswitcher.js b/mapea-js/src/impl/ol/control/Layerswitcher.js index f4ff93b2a..738ead854 100644 --- a/mapea-js/src/impl/ol/control/Layerswitcher.js +++ b/mapea-js/src/impl/ol/control/Layerswitcher.js @@ -3,7 +3,7 @@ */ import layerswitcherTemplate from 'templates/layerswitcher.html'; -import { isNullOrEmpty, concatUrlPaths } from 'M/util/Utils'; +import { isNullOrEmpty, concatUrlPaths, isUndefined } from 'M/util/Utils'; import { compileSync as compileTemplate } from 'M/util/Template'; import LayerSwitcherFacade from 'M/control/Layerswitcher'; import Layer from 'M/layer/Layer'; @@ -20,10 +20,16 @@ class LayerSwitcher extends Control { * @extends {ol.control.Control} * @api stable */ - constructor() { + constructor(emptyLayer) { super(); this.mouseoutTimeId = null; this.panel = null; + this.statusEmptyLayer = false; + if (!isUndefined(emptyLayer) && emptyLayer !== '') { + this.activeEmptyLayer = true; + } else { + this.activeEmptyLayer = false; + } } /** @@ -64,24 +70,30 @@ class LayerSwitcher extends Control { const groupId = evt.target.getAttribute('data-group-id'); let group = null; if (!isNullOrEmpty(evt.target)) { - const layerName = evt.target.getAttribute('data-layer-name'); - if (!isNullOrEmpty(layerName)) { + const layerID = evt.target.getAttribute('data-layer-name'); + if (!isNullOrEmpty(layerID)) { evt.stopPropagation(); - let layer = this.facadeMap_.getLayers().filter(l => l.name === layerName)[0]; + let layer = this.facadeMap_.getLayers().filter(l => l.id === layerID)[0]; if (isNullOrEmpty(layer) && !isNullOrEmpty(groupId)) { group = LayerGroup.findGroupById(groupId, this.facadeMap_.getLayerGroup()); - layer = group.getChildren().find(l => ((l instanceof Layer) && (l.name === layerName))); + layer = group.getChildren().find(l => ((l instanceof Layer) && (l.id === layerID))); } // checkbox if (evt.target.classList.contains('m-check')) { /* sets the layer visibility only if the layer is not base layer and visible */ - if (layer.transparent === true || !layer.isVisible()) { + if (!isUndefined(layer) && (layer.transparent === true || !layer.isVisible())) { const opacity = evt.target.parentElement.parentElement.querySelector('div.tools > input'); if (!isNullOrEmpty(opacity)) { layer.setOpacity(parseFloat(opacity.value)); } layer.setVisible(!layer.isVisible()); + this.statusEmptyLayer = false; + } else { + this.statusEmptyLayer = true; + this.facadeMap_.getBaseLayers().forEach((base) => { + base.setVisible(false); + }); } } else if (evt.target.classList.contains('m-layerswitcher-transparency')) { // range @@ -106,24 +118,30 @@ class LayerSwitcher extends Control { const groupId = evt.target.getAttribute('data-group-id'); let group = null; if (!isNullOrEmpty(evt.target)) { - const layerName = evt.target.getAttribute('data-layer-name'); - if (!isNullOrEmpty(layerName)) { + const layerID = evt.target.getAttribute('data-layer-name'); + if (!isNullOrEmpty(layerID)) { evt.stopPropagation(); - let layer = this.facadeMap_.getLayers().filter(l => l.name === layerName)[0]; + let layer = this.facadeMap_.getLayers().filter(l => l.id === layerID)[0]; if (isNullOrEmpty(layer) && !isNullOrEmpty(groupId)) { group = LayerGroup.findGroupById(groupId, this.facadeMap_.getLayerGroup()); - layer = group.getChildren().find(l => ((l instanceof Layer) && (l.name === layerName))); + layer = group.getChildren().find(l => ((l instanceof Layer) && (l.id === layerID))); } // checkbox if (evt.target.classList.contains('m-check')) { /* sets the layer visibility only if the layer is not base layer and visible */ - if (layer.transparent === true || !layer.isVisible()) { + if (!isUndefined(layer) && (layer.transparent === true || !layer.isVisible())) { const opacity = evt.target.parentElement.parentElement.querySelector('div.tools > input'); if (!isNullOrEmpty(opacity)) { layer.setOpacity(parseFloat(opacity.value)); } layer.setVisible(!layer.isVisible()); + this.statusEmptyLayer = false; + } else { + this.statusEmptyLayer = true; + this.facadeMap_.getBaseLayers().forEach((base) => { + base.setVisible(false); + }); } // range } else if (evt.target.classList.contains('m-layerswitcher-transparency')) { @@ -166,6 +184,11 @@ class LayerSwitcher extends Control { */ renderPanel() { LayerSwitcherFacade.getTemplateVariables(this.facadeMap_).then((templateVars) => { + if (this.activeEmptyLayer) { + const emptyLayer = Object.assign({}, LayerSwitcherFacade.EMPTYLAYER); + emptyLayer.visible = this.statusEmptyLayer; + templateVars.baseLayers.unshift(emptyLayer); + } const html = compileTemplate(layerswitcherTemplate, { vars: templateVars, }); @@ -285,9 +308,9 @@ class LayerSwitcher extends Control { const imgElements = html.querySelectorAll('img'); Array.prototype.forEach.call(imgElements, (imgElem) => { imgElem.addEventListener('error', (evt) => { - const layerName = evt.target.getAttribute('data-layer-name'); + const layerIDs = evt.target.getAttribute('data-layer-name'); const legendErrorUrl = concatUrlPaths([M.config.THEME_URL, Layer.LEGEND_ERROR]); - const layer = this.facadeMap_.getLayers().filter(l => l.name === layerName)[0]; + const layer = this.facadeMap_.getLayers().filter(l => l.id === layerIDs)[0]; if (!isNullOrEmpty(layer)) { layer.setLegendURL(legendErrorUrl); } diff --git a/mapea-js/src/impl/ol/format/wmc/WMC110.js b/mapea-js/src/impl/ol/format/wmc/WMC110.js index c92fdce03..25a76769a 100644 --- a/mapea-js/src/impl/ol/format/wmc/WMC110.js +++ b/mapea-js/src/impl/ol/format/wmc/WMC110.js @@ -129,6 +129,7 @@ class WMC110 extends XML { legend: layerInfo.title, url: layerInfo.href, transparent: !/^1|(true)$/i.test(options.isBaseLayer), + version: layerInfo.params.version, }, options); return layer; } diff --git a/mapea-js/src/impl/ol/layer/MVT.js b/mapea-js/src/impl/ol/layer/MVT.js index 0a6f77bec..85cf453fd 100644 --- a/mapea-js/src/impl/ol/layer/MVT.js +++ b/mapea-js/src/impl/ol/layer/MVT.js @@ -165,6 +165,36 @@ class MVT extends Vector { return features; } + /** + * This function sets the visibility of this layer + * + * @function + * @api stable + * @expose + */ + setVisible(visibility) { + this.visibility = visibility; + if ((visibility === true) && (this.transparent !== true)) { + this.map.getBaseLayers() + .filter(layer => !layer.equals(this) && layer.isVisible()) + .forEach(layer => layer.setVisible(false)); + this.ol3Layer.setVisible(visibility); + // updates resolutions and keep the zoom + const oldZoom = this.map.getZoom(); + this.map.getImpl().updateResolutionsFromBaseLayer(); + if (!isNullOrEmpty(oldZoom)) { + this.map.setZoom(oldZoom); + } + // updates resolutions and keep the bbox + const oldBbox = this.map.getBbox(); + if (!isNullOrEmpty(oldBbox)) { + this.map.setBbox(oldBbox, { nearest: true }); + } + } else if (!isNullOrEmpty(this.ol3Layer)) { + this.ol3Layer.setVisible(visibility); + } + } + // /** // * This function checks if an object is equals // * to this layer diff --git a/mapea-js/src/impl/ol/layer/WMS.js b/mapea-js/src/impl/ol/layer/WMS.js index e8da3ca8b..00eef96f5 100644 --- a/mapea-js/src/impl/ol/layer/WMS.js +++ b/mapea-js/src/impl/ol/layer/WMS.js @@ -213,10 +213,9 @@ class WMS extends LayerBase { // checks if it is a WMS_FULL if (isNullOrEmpty(this.name)) { // WMS_FULL (add all wms layers) this.addAllLayers_(); - } else { // just one WMS layer + } else { this.addSingleLayer_(); } - if (this.legendUrl_ === concatUrlPaths([M.config.THEME_URL, FacadeLayerBase.LEGEND_DEFAULT])) { this.legendUrl_ = addParameters(this.url, { SERVICE: 'WMS', @@ -224,7 +223,8 @@ class WMS extends LayerBase { REQUEST: 'GetLegendGraphic', LAYER: this.name, FORMAT: 'image/png', - EXCEPTIONS: 'image/png', + STYLE: this.styles[0] || '', + SLD_VERSION: '1.1.0', }); } } @@ -572,7 +572,6 @@ class WMS extends LayerBase { const getCapabilitiesDocument = response.xml; const getCapabilitiesParser = new FormatWMS(); const getCapabilities = getCapabilitiesParser.customRead(getCapabilitiesDocument); - const getCapabilitiesUtils = new GetCapabilities(getCapabilities, layerUrl, projection); success(getCapabilitiesUtils); } else { @@ -580,7 +579,6 @@ class WMS extends LayerBase { const getCapabilitiesDocument = response2.xml; const getCapabilitiesParser = new FormatWMS(); const getCapabilities = getCapabilitiesParser.customRead(getCapabilitiesDocument); - const capabilities = new GetCapabilities(getCapabilities, layerUrl, projection); success(capabilities); }); @@ -591,6 +589,33 @@ class WMS extends LayerBase { return this.getCapabilitiesPromise; } + /** + * This funcion returns the URL of the legend of GetCapabilities + * + * @function + * @return {Promise} url WMS equivalen service for this layer. + * @api + */ + getLegendCapabilities() { + return this.getCapabilities().then((getCapabilities) => { + let url = ''; + let layer = getCapabilities.capabilities.Capability.Layer.Layer; + if (layer.length > 1) { + layer = + layer.find(elm => elm.Name === this.name); + } else if (layer.length === 1 && layer[0].Name !== this.name) { + layer = layer[0].Layer.find(elm => elm.Name === this.name); + } else { + layer = layer[0]; + } + if (!isUndefined(layer.Style) && !isUndefined(layer.Style[0].LegendURL) && + !isUndefined(layer.Style[0].LegendURL[0].OnlineResource)) { + url = layer.Style[0].LegendURL[0].OnlineResource; + } + return url; + }); + } + /** * This function destroys this layer, cleaning the HTML * and unregistering all events diff --git a/mapea-js/src/impl/ol/style/Cluster.js b/mapea-js/src/impl/ol/style/Cluster.js index 6f966f4b2..8c60a092f 100644 --- a/mapea-js/src/impl/ol/style/Cluster.js +++ b/mapea-js/src/impl/ol/style/Cluster.js @@ -10,8 +10,7 @@ import * as OLeasing from 'ol/easing'; import OLFeature from 'ol/Feature'; import OLGeomPolygon from 'ol/geom/Polygon'; import OLGeomPoint from 'ol/geom/Point'; -import Polygon from 'M/style/Polygon'; -import StylePoint from 'M/style/Point'; +import Generic from 'M/style/Generic'; import FacadeCluster from 'M/style/Cluster'; import { inverseColor, extendsObj, isFunction, isNullOrEmpty } from 'M/util/Utils'; import * as EventType from 'M/event/eventtype'; @@ -368,13 +367,13 @@ class Cluster extends Style { extract: false, }, { displayInLayerSwitcher: false, - style: new Polygon(this.optionsVendor_.convexHullStyle), + style: new Generic(this.optionsVendor_.convexHullStyle), }); this.convexHullLayer_.addFeatures(convexFeature); this.layer_.getImpl().getMap().addLayers(this.convexHullLayer_); this.layer_.getImpl().getMap().getMapImpl().getView() .on('change:resolution', this.clearConvexHull.bind(this), this); - this.convexHullLayer_.setStyle(new Polygon(this.optionsVendor_.convexHullStyle)); + this.convexHullLayer_.setStyle(new Generic(this.optionsVendor_.convexHullStyle)); this.convexHullLayer_.setZIndex(99990); } else { this.convexHullLayer_.removeFeatures(this.convexHullLayer_.getFeatures()); @@ -444,20 +443,23 @@ class Cluster extends Style { const numFeatures = clusterOlFeatures.length; const range = this.options_.ranges.find(el => (el.min <= numFeatures && el.max >= numFeatures)); if (!isNullOrEmpty(range)) { - const style = range.style.clone(); + let style = range.style.clone(); + if (!(style instanceof Generic)) { + style = new Generic({ point: style.getOptions() }); + } if (selected) { - style.set('fill.opacity', 0.33); + style.set('point.fill.opacity', 0.33); } else if (this.options_.displayAmount) { - style.set('label', this.options_.label); - let labelColor = style.get('label.color'); + style.set('point.label', this.options_.label); + let labelColor = style.get('point.label.color'); if (isNullOrEmpty(labelColor)) { - const fillColor = style.get('fill.color'); + const fillColor = style.get('point.fill.color'); if (!isNullOrEmpty(fillColor)) { labelColor = inverseColor(fillColor); } else { labelColor = '#000'; } - style.set('label.color', labelColor); + style.set('point.label.color', labelColor); } } olStyle = style.getImpl().olStyleFn(feature, resolution); @@ -489,15 +491,15 @@ class Cluster extends Style { const ranges = [{ min: 2, max: breakpoint, - style: new StylePoint(FacadeCluster.RANGE_1_DEFAULT), + style: new Generic({ point: FacadeCluster.RANGE_1_DEFAULT }), }, { min: breakpoint, max: breakpoint * 2, - style: new StylePoint(FacadeCluster.RANGE_2_DEFAULT), + style: new Generic({ point: FacadeCluster.RANGE_2_DEFAULT }), }, { min: breakpoint * 2, max: numFeatures + 1, - style: new StylePoint(FacadeCluster.RANGE_3_DEFAULT), + style: new Generic({ point: FacadeCluster.RANGE_3_DEFAULT }), }]; this.options_.ranges = ranges; return ranges; diff --git a/mapea-js/src/impl/ol/style/Generic.js b/mapea-js/src/impl/ol/style/Generic.js index f5b69939a..04368d709 100644 --- a/mapea-js/src/impl/ol/style/Generic.js +++ b/mapea-js/src/impl/ol/style/Generic.js @@ -4,7 +4,6 @@ import { isFunction, isUndefined, isDynamic, drawDynamicStyle } from 'M/util/Utils'; import OLFeature from 'ol/Feature'; import RenderFeature from 'ol/render/Feature'; -import GeometryType from 'ol/geom/GeometryType'; import OLStyleIcon from 'ol/style/Icon'; import OLGeomPolygon from 'ol/geom/Polygon'; import OLGeomLineString from 'ol/geom/LineString'; @@ -18,15 +17,14 @@ import { getLineStyle, getPointStyle, getPolygonStyle } from './builder'; * @type {object} */ const GETTER_BY_GEOM = { - [GeometryType.POINT]: (...args) => getPointStyle(args[0].point, args[1], args[2]), - [GeometryType.LINE_STRING]: (...args) => getLineStyle(args[0].line, args[1], args[2]), - [GeometryType.POLYGON]: (...args) => getPolygonStyle(args[0].polygon, args[1], args[2]), - [GeometryType.MULTI_POINT]: (...args) => getPointStyle(args[0].point, args[1], args[2]), - [GeometryType.MULTI_LINE_STRING]: (...args) => getLineStyle(args[0].line, args[1], args[2]), - [GeometryType.MULTI_POLYGON]: (...args) => getPolygonStyle(args[0].polygon, args[1], args[2]), + Point: (...args) => getPointStyle(args[0].point, args[1], args[2]), + LineString: (...args) => getLineStyle(args[0].line, args[1], args[2]), + Polygon: (...args) => getPolygonStyle(args[0].polygon, args[1], args[2]), + MultiPoint: (...args) => getPointStyle(args[0].point, args[1], args[2]), + MultiLineString: (...args) => getLineStyle(args[0].line, args[1], args[2]), + MultiPolygon: (...args) => getPolygonStyle(args[0].polygon, args[1], args[2]), }; - /** * @classdesc * @api diff --git a/mapea-js/src/impl/ol/util/Utils.js b/mapea-js/src/impl/ol/util/Utils.js index 182d28eb7..8ac431f50 100644 --- a/mapea-js/src/impl/ol/util/Utils.js +++ b/mapea-js/src/impl/ol/util/Utils.js @@ -8,7 +8,6 @@ import { getWidth, extend, getCenter } from 'ol/extent'; import { get as getProj, getTransform, transformExtent } from 'ol/proj'; import OLFeature from 'ol/Feature'; import RenderFeature from 'ol/render/Feature'; -import GeometryType from 'ol/geom/GeometryType'; import Point from 'ol/geom/Point'; import LineString from 'ol/geom/LineString'; import LinearRing from 'ol/geom/LinearRing'; @@ -456,32 +455,32 @@ class Utils { const endss = olRenderFeature.getEndss(); const type = olRenderFeature.getType(); switch (type) { - case GeometryType.POINT: + case 'Point': geometry = new Point(coordinates); break; - case GeometryType.LINE_STRING: + case 'LineString': geometry = new LineString(coordinates); break; - case GeometryType.LINEAR_RING: + case 'LinearRing': geometry = new LinearRing(coordinates); break; - case GeometryType.POLYGON: + case 'Polygon': geometry = new Polygon(coordinates); break; - case GeometryType.MULTI_POINT: + case 'MultiPoint': geometry = new MultiPoint(coordinates); break; - case GeometryType.MULTI_LINE_STRING: + case 'MultiLineString': geometry = new MultiLineString(coordinates, undefined, ends); break; - case GeometryType.MULTI_POLYGON: + case 'MultiPolygon': geometry = new MultiPolygon(coordinates, undefined, endss); break; - case GeometryType.GEOMETRY_COLLECTION: + case 'GeometryCollection': const geometries = olRenderFeature.getGeometries(); geometry = new GeometryCollection(geometries); break; - case GeometryType.CIRCLE: + case 'Circle': const center = olRenderFeature.getFlatInteriorPoint(); geometry = new Circle(center); break; diff --git a/mapea-js/src/plugins/attributetable/.mplugin b/mapea-js/src/plugins/attributetable/.mplugin index 1271a99a0..d39c5f5a6 100644 --- a/mapea-js/src/plugins/attributetable/.mplugin +++ b/mapea-js/src/plugins/attributetable/.mplugin @@ -1,3 +1,3 @@ { - "version": "2.0.1" + "version": "2.1.0" } diff --git a/mapea-js/src/plugins/attributetable/README.md b/mapea-js/src/plugins/attributetable/README.md index ef93483d7..42d29f7e7 100644 --- a/mapea-js/src/plugins/attributetable/README.md +++ b/mapea-js/src/plugins/attributetable/README.md @@ -1,7 +1,8 @@ ## Descripción Panel en el que seleccionar una de las capas vectoriales del mapa para que se listen sus elementos en forma de tabla. El panel -puede desacoplarse del lateral. +puede desacoplarse del lateral. Permite la selección de elementos, que son resaltados visualmente en el mapa, y el zoom a los +elementos seleccionados. ## Recursos y uso @@ -17,11 +18,11 @@ mapajs.addPlugin(new M.plugin.AttributeTable({})); Configuración detallada: ```javascript -// numero de elementos por pagina +// numero de elementos por pagina y estilo de seleccion mapajs.addPlugin(new M.plugin.AttributeTable({ - "pages": "8" + pages: 8, + selectedStyle: estiloSeleccion })); - ``` ## Ejemplo funcional @@ -29,5 +30,4 @@ mapajs.addPlugin(new M.plugin.AttributeTable({ [JSFiddle](http://jsfiddle.net/sigcJunta/t4oLhuo4/) ## Tabla de compatibilidad de versiones -[Consulta el api resourcePlugin](https://mapea4-sigc.juntadeandalucia.es/mapea/api/actions/resourcesPlugins?name=attributetable) - +[Consulta el api resourcePlugin](https://mapea4-sigc.juntadeandalucia.es/mapea/api/actions/resourcesPlugins?name=attributetable) \ No newline at end of file diff --git a/mapea-js/src/plugins/attributetable/api.json b/mapea-js/src/plugins/attributetable/api.json index dcd470f81..ed1a9b8bd 100644 --- a/mapea-js/src/plugins/attributetable/api.json +++ b/mapea-js/src/plugins/attributetable/api.json @@ -15,10 +15,10 @@ "files": { "ol": { "scripts": [ - "attributetable-2.0.1.ol.min.js" + "attributetable-2.1.0.ol.min.js" ], "styles": [ - "attributetable-2.0.1.min.css" + "attributetable-2.1.0.min.css" ] } }, @@ -29,8 +29,8 @@ "name": "Attributable", "description": "Shows a table of all the attributes of each feature of a vector layer.", "text": "", - "version": "2.0.1", - "date": "11/10/2019", + "version": "2.1.0", + "date": "01/09/2022", "author": "Junta de Andalucía", "org": "Junta de Andalucía", "tags": "mapea,plugin", @@ -44,6 +44,6 @@ "plugins": [{ "uuid": "", "name": "" }], "services": [{ "name": "", "description": "" }] }, - "compatibility": ["4" ,"5", "6"] + "compatibility": ["6"] } -} +} \ No newline at end of file diff --git a/mapea-js/src/plugins/attributetable/facade/js/attributetable.js b/mapea-js/src/plugins/attributetable/facade/js/attributetable.js index 165de15de..3d236a722 100644 --- a/mapea-js/src/plugins/attributetable/facade/js/attributetable.js +++ b/mapea-js/src/plugins/attributetable/facade/js/attributetable.js @@ -43,6 +43,16 @@ export default class AttributeTable extends M.Plugin { * @type {string} */ this.idAddedLayer = ''; + + /** + * Control event ADDED_TO_MAP + * + * @public + * @type {Boolean} + */ + this.added_to_map = true; + + this.userSelectedStyle = parameters.selectedStyle; } /** @@ -70,7 +80,13 @@ export default class AttributeTable extends M.Plugin { */ add(map) { this.facadeMap_ = map; - this.control_ = new AttributeTableControl(this.numPages_); + this.control_ = new AttributeTableControl(this.numPages_, this.userSelectedStyle); + this.control_.on(M.evt.ADDED_TO_MAP, () => { + if (this.added_to_map) { + this.fire(M.evt.ADDED_TO_MAP); + this.added_to_map = false; + } + }); this.panel_ = new M.ui.Panel(AttributeTable.NAME, { collapsible: true, className: 'm-attributetable', diff --git a/mapea-js/src/plugins/attributetable/facade/js/attributetableControl.js b/mapea-js/src/plugins/attributetable/facade/js/attributetableControl.js index 5df62c364..6aac50403 100644 --- a/mapea-js/src/plugins/attributetable/facade/js/attributetableControl.js +++ b/mapea-js/src/plugins/attributetable/facade/js/attributetableControl.js @@ -13,7 +13,7 @@ export default class AttributeTableControl extends M.Control { * @extends {M.Control} * @api stable */ - constructor(numPages) { + constructor(numPages, userSelectedStyle) { const impl = new AttributeTableControlImpl(); super(impl, 'attributetableControl'); @@ -34,6 +34,47 @@ export default class AttributeTableControl extends M.Control { sortType: null, }; + this.featuresSeleccionados = []; + this.originalStyles = []; + if (!M.utils.isNullOrEmpty(userSelectedStyle)) { + this.selectedStyle = userSelectedStyle; + } else { + this.selectedStyle = new M.style.Generic({ + point: { + radius: 5, + fill: { + color: 'yellow', + opacity: 1, + }, + stroke: { + color: 'red', + width: 2, + }, + }, + polygon: { + fill: { + color: 'yellow', + opacity: 0.6, + }, + stroke: { + color: 'red', + width: 1, + }, + }, + line: { + stroke: { + color: 'red', + width: 1, + }, + fill: { + color: 'yellow', + width: 2, + opacity: 0.8, + }, + }, + }); + } + if (M.utils.isUndefined(AttributeTableControlImpl)) { M.exception('La implementación usada no puede crear controles AttributeTableControl'); } @@ -80,6 +121,7 @@ export default class AttributeTableControl extends M.Control { this.template_ = html; this.areaTable_ = html.querySelector('div#m-attributetable-datas'); html.querySelector('#m-attributetable-layer').addEventListener('click', this.openPanel_.bind(this)); + html.querySelector('#m-zoom-selected').addEventListener('click', this.zoomToSelected.bind(this)); html.querySelector('#m-attributetable-select').addEventListener('change', (evt) => { this.pages_ = { total: 0, @@ -91,12 +133,36 @@ export default class AttributeTableControl extends M.Control { sortBy: null, sortType: null, }; + if (this.layer_) { + const feats = this.layer_.getFeatures() + .filter(f => this.featuresSeleccionados.includes(f.getId())); + feats.forEach((f) => { + f.setStyle(this.originalStyles[f.getId()]); + }); + } + this.featuresSeleccionados = []; + this.originalStyles = []; + this.selectAllActive_ = false; this.renderPanel_(evt.target[evt.target.selectedIndex].getAttribute('name')); }); } return html; } + zoomToSelected(evt) { + const zoomTo = []; + this.layer_.getFeatures().forEach((feature) => { + if (this.featuresSeleccionados.includes(feature.getId())) { + zoomTo.push(feature); + } + }); + const pcode = this.facadeMap_.getProjection().code; + const extent = M.impl.utils.getFeaturesExtent(zoomTo, pcode); + if (!M.utils.isNullOrEmpty(extent)) { + this.facadeMap_.setBbox(extent); + } + } + /** * This function refresh the panel info * @@ -126,8 +192,22 @@ export default class AttributeTableControl extends M.Control { headerAtt = Object.keys(features[0].getAttributes()); features.forEach((feature) => { const properties = Object.values(feature.getAttributes()); + const fid = feature.getId(); + let seleccionado = false; + let disableChecks = false; + if (this.featuresSeleccionados.includes(fid)) { + seleccionado = true; + } + if (this.layer_ instanceof M.layer.MVT) { + disableChecks = true; + } if (!M.utils.isNullOrEmpty(properties)) { - attributes.push(properties); + attributes.push({ + properties, + id: fid, + seleccionado, + disableChecks, + }); } }); if (this.sortProperties_.active) { @@ -135,6 +215,10 @@ export default class AttributeTableControl extends M.Control { } } let params = {}; + let disableChecks = false; + if (this.layer_ instanceof M.layer.MVT) { + disableChecks = true; + } if (!M.utils.isUndefined(headerAtt)) { params = { headerAtt, @@ -142,6 +226,8 @@ export default class AttributeTableControl extends M.Control { pages: this.pageResults_(attributes), attributes: (M.utils.isNullOrEmpty(attributes)) ? false : attributes .slice(this.pages_.element, this.pages_.element + this.numPages_), + allSelected: this.selectAllActive_, + disableChecks, }; } const options = { jsonp: true, vars: params }; @@ -163,6 +249,10 @@ export default class AttributeTableControl extends M.Control { html.querySelector('input[value=selectAll]').addEventListener('click', this.selectAll.bind(this)); html.querySelector('#m-attributetable-attributes').addEventListener('click', this.openPanel_.bind(this)); html.querySelector('#m-attributetable-refresh').addEventListener('click', this.refresh_.bind(this)); + const checks = html.querySelectorAll('#m-check-select'); + for (let i = 0; i < checks.length; i += 1) { + checks[i].addEventListener('change', this.markSelected.bind(this)); + } const header = Array.prototype.slice.call(this.areaTable_.querySelector('tr').querySelectorAll('td'), 1); header.forEach((td) => { td.addEventListener('click', this.sort_.bind(this)); @@ -176,6 +266,23 @@ export default class AttributeTableControl extends M.Control { return html; } + // TODO: LOGICA DE MARCADO/DESMARCADO CHECK + markSelected(evt) { + const feats = this.layer_.getFeatures().filter(f => f.getId() === evt.target.value); + if (evt.target.checked) { + this.featuresSeleccionados.push(evt.target.value); + if (feats.length > 0) { + this.originalStyles[evt.target.value] = feats[0].getStyle(); + feats[0].setStyle(this.selectedStyle); + } + } else { + this.featuresSeleccionados.remove(evt.target.value); + if (feats.length > 0) { + feats[0].setStyle(this.originalStyles[evt.target.value]); + } + } + } + /** *This functi;on is has Layer map * @@ -194,7 +301,7 @@ export default class AttributeTableControl extends M.Control { if (M.utils.isString(layerSearch)) { this.facadeMap_.getLayers().forEach((lay) => { - if (lay.name === layerSearch) { + if (lay.id === layerSearch) { layersFind.push(lay); } }); @@ -209,7 +316,7 @@ export default class AttributeTableControl extends M.Control { } if (M.utils.isArray(layerSearch)) { this.facadeMap_.getLayers().forEach((lay) => { - if (layerSearch.indexOf(lay.name) >= 0) { + if (layerSearch.indexOf(lay.id) >= 0) { layersFind.push(lay); } }); @@ -239,10 +346,18 @@ export default class AttributeTableControl extends M.Control { * @function */ addSelectAll_() { - const checks = this.areaTable_.querySelectorAll('input'); - checks.forEach((element) => { - element.setAttribute('checked', true); + // Si se seleccionan todos los elementos de la capa + this.layer_.getFeatures().forEach((feature) => { + const fid = feature.getId(); + // Si el f no estaba ya seleccionado, + if (!this.featuresSeleccionados.includes(fid)) { + this.featuresSeleccionados.push(fid); + this.originalStyles[fid] = feature.getStyle(); + feature.setStyle(this.selectedStyle); + } }); + + this.renderPanel_(); } /** @@ -252,10 +367,13 @@ export default class AttributeTableControl extends M.Control { * @function */ removeSelectAll_() { - const checks = this.areaTable_.querySelectorAll('input'); - checks.forEach((element) => { - element.removeAttribute('checked'); + this.featuresSeleccionados = []; + this.layer_.getFeatures().forEach((feature) => { + const fid = feature.getId(); + feature.setStyle(this.originalStyles[fid]); }); + + this.renderPanel_(); } /** @@ -364,7 +482,7 @@ export default class AttributeTableControl extends M.Control { const sortBy = this.sortProperties_.sortBy; const pos = headerAtt.indexOf(sortBy); let attributesSort = attributes.sort((a, b) => { - return a[pos] - b[pos]; + return a.properties[pos].localeCompare(b.properties[pos]); }); if (this.sortProperties_.sortType === '>') { attributesSort = attributesSort.reverse(); diff --git a/mapea-js/src/plugins/attributetable/templates/attributetable.html b/mapea-js/src/plugins/attributetable/templates/attributetable.html index b0b425721..4d4fe3c3d 100644 --- a/mapea-js/src/plugins/attributetable/templates/attributetable.html +++ b/mapea-js/src/plugins/attributetable/templates/attributetable.html @@ -6,9 +6,10 @@ +
diff --git a/mapea-js/src/plugins/attributetable/templates/tableData.html b/mapea-js/src/plugins/attributetable/templates/tableData.html index 6d6791b9d..742ddfb26 100644 --- a/mapea-js/src/plugins/attributetable/templates/tableData.html +++ b/mapea-js/src/plugins/attributetable/templates/tableData.html @@ -4,31 +4,31 @@ {{#if attributes}} -
- - - - - {{#each headerAtt}} - +
+
{{this}}
+ + + + {{#each headerAtt}} + + {{/each}} + {{#each attributes}} + + + {{#each this.properties}} + + {{/each}} + {{/each}} - {{#each attributes}} - - - {{#each this}} - - {{/each}} - - {{/each}} - -
{{this}}
{{{this}}}
{{{this}}}
-
-
- - Página {{pages.actual}} de {{pages.total}} - -
+ + + +
+ + Página {{pages.actual}} de {{pages.total}} + +
{{else}} -
No se han encontrado atributos.
+
No se han encontrado atributos.
{{/if}} - + \ No newline at end of file diff --git a/mapea-js/src/plugins/geosearch/.mplugin b/mapea-js/src/plugins/geosearch/.mplugin index c9e177271..4248500d7 100644 --- a/mapea-js/src/plugins/geosearch/.mplugin +++ b/mapea-js/src/plugins/geosearch/.mplugin @@ -1,3 +1,3 @@ { - "version": "2.0.2" + "version": "2.0.3" } diff --git a/mapea-js/src/plugins/geosearch/api.json b/mapea-js/src/plugins/geosearch/api.json index 0f1420997..d770edba6 100644 --- a/mapea-js/src/plugins/geosearch/api.json +++ b/mapea-js/src/plugins/geosearch/api.json @@ -23,10 +23,10 @@ "files": { "ol": { "scripts": [ - "geosearch-2.0.2.ol.min.js" + "geosearch-2.0.3.ol.min.js" ], "styles": [ - "geosearch-2.0.2.min.css" + "geosearch-2.0.3.min.css" ] } }, @@ -37,7 +37,7 @@ "name": "Geosearch", "description": "", "text": "", - "version": "2.0.2", + "version": "2.0.3", "date": "11/10/2019", "author": "Junta de Andalucía", "org": "Junta de Andalucía", diff --git a/mapea-js/src/plugins/geosearch/facade/js/geosearch.js b/mapea-js/src/plugins/geosearch/facade/js/geosearch.js index ed4d004f7..ed9b82e45 100644 --- a/mapea-js/src/plugins/geosearch/facade/js/geosearch.js +++ b/mapea-js/src/plugins/geosearch/facade/js/geosearch.js @@ -116,6 +116,9 @@ export default class Geosearch extends M.Plugin { this.searchParameters_, this.showHelp_, ); + this.control_.on(M.evt.ADDED_TO_MAP, () => { + this.fire(M.evt.ADDED_TO_MAP); + }); this.control_.on(M.evt.ADD_TO_MAP, this.onLoadCallback_, this); this.panel_ = new M.ui.Panel('geosearch', { collapsible: true, diff --git a/mapea-js/src/plugins/geosearchbycoordinates/.mplugin b/mapea-js/src/plugins/geosearchbycoordinates/.mplugin index 24d3a2ff4..ef6dca9c6 100644 --- a/mapea-js/src/plugins/geosearchbycoordinates/.mplugin +++ b/mapea-js/src/plugins/geosearchbycoordinates/.mplugin @@ -1,3 +1,3 @@ { - "version": "1.0.1" + "version": "1.0.2" } \ No newline at end of file diff --git a/mapea-js/src/plugins/geosearchbycoordinates/api.json b/mapea-js/src/plugins/geosearchbycoordinates/api.json index 14a03a858..6bc0add84 100644 --- a/mapea-js/src/plugins/geosearchbycoordinates/api.json +++ b/mapea-js/src/plugins/geosearchbycoordinates/api.json @@ -8,10 +8,10 @@ "files": { "ol": { "scripts": [ - "geosearchbycoordinates-1.0.1.ol.min.js" + "geosearchbycoordinates-1.0.2.ol.min.js" ], "styles": [ - "geosearchbycoordinates-1.0.1.min.css" + "geosearchbycoordinates-1.0.2.min.css" ] } }, @@ -22,7 +22,7 @@ "name": "GeosearchByCoordinates", "description": "Search for locations within a given radius from a click on a point on the map.", "text": "", - "version": "1.0.1", + "version": "1.0.2", "date": "11/10/2019", "author": "Junta de Andalucía", "org": "Junta de Andalucía", diff --git a/mapea-js/src/plugins/geosearchbycoordinates/facade/js/geosearchbycoordinates.js b/mapea-js/src/plugins/geosearchbycoordinates/facade/js/geosearchbycoordinates.js index 42000e6c7..6c30eb6b9 100644 --- a/mapea-js/src/plugins/geosearchbycoordinates/facade/js/geosearchbycoordinates.js +++ b/mapea-js/src/plugins/geosearchbycoordinates/facade/js/geosearchbycoordinates.js @@ -125,7 +125,9 @@ export default class GeosearchByCoordinates extends M.Plugin { this.distance_, this.spatialField_, this.rows_); - + this.controlGeo_.on(M.evt.ADDED_TO_MAP, () => { + this.fire(M.evt.ADDED_TO_MAP); + }); this.panel_ = new M.ui.Panel(GeosearchByCoordinates.NAME, { collapsible: false, className: 'm-geosearchbylocation', diff --git a/mapea-js/src/plugins/geosearchbylocation/.mplugin b/mapea-js/src/plugins/geosearchbylocation/.mplugin index 3e84cf95f..1271a99a0 100644 --- a/mapea-js/src/plugins/geosearchbylocation/.mplugin +++ b/mapea-js/src/plugins/geosearchbylocation/.mplugin @@ -1,3 +1,3 @@ { - "version": "2.0.0" + "version": "2.0.1" } diff --git a/mapea-js/src/plugins/geosearchbylocation/api.json b/mapea-js/src/plugins/geosearchbylocation/api.json index 1fef9fa3c..d33b45a49 100644 --- a/mapea-js/src/plugins/geosearchbylocation/api.json +++ b/mapea-js/src/plugins/geosearchbylocation/api.json @@ -27,10 +27,10 @@ "files": { "ol": { "scripts": [ - "geosearchbylocation-2.0.0.ol.min.js" + "geosearchbylocation-2.0.1.ol.min.js" ], "styles": [ - "geosearchbylocation-2.0.0.min.css" + "geosearchbylocation-2.0.1.min.css" ] } }, @@ -41,7 +41,7 @@ "name": "GeosearchByLocation", "description": "Search for locations within a given radius from a location user.", "text": "", - "version": "2.0.0", + "version": "2.0.1", "date": "11/10/2019", "author": "Junta de Andalucía", "org": "Junta de Andalucía", diff --git a/mapea-js/src/plugins/geosearchbylocation/facade/js/geosearchbylocation.js b/mapea-js/src/plugins/geosearchbylocation/facade/js/geosearchbylocation.js index 2b20047de..2c28a250d 100644 --- a/mapea-js/src/plugins/geosearchbylocation/facade/js/geosearchbylocation.js +++ b/mapea-js/src/plugins/geosearchbylocation/facade/js/geosearchbylocation.js @@ -126,6 +126,9 @@ export default class Geosearchbylocation extends M.Plugin { this.spatialField_, this.rows_, ); + this.controlGeo_.on(M.evt.ADDED_TO_MAP, () => { + this.fire(M.evt.ADDED_TO_MAP); + }); this.panel_ = new M.ui.Panel(Geosearchbylocation.NAME, { collapsible: false, diff --git a/mapea-js/src/plugins/measurebar/.mplugin b/mapea-js/src/plugins/measurebar/.mplugin index f1745a868..13717ab5c 100644 --- a/mapea-js/src/plugins/measurebar/.mplugin +++ b/mapea-js/src/plugins/measurebar/.mplugin @@ -1,3 +1,3 @@ { - "version": "3.1.0" + "version": "3.1.1" } diff --git a/mapea-js/src/plugins/measurebar/api.json b/mapea-js/src/plugins/measurebar/api.json index 5d996a3a0..6723f03d2 100644 --- a/mapea-js/src/plugins/measurebar/api.json +++ b/mapea-js/src/plugins/measurebar/api.json @@ -6,10 +6,10 @@ "files": { "ol": { "scripts": [ - "measurebar-3.1.0.ol.min.js" + "measurebar-3.1.1.ol.min.js" ], "styles": [ - "measurebar-3.1.0.min.css" + "measurebar-3.1.1.min.css" ] } }, @@ -20,7 +20,7 @@ "name": "Measurebar", "description": "Tool to measure distances and areas.", "text": "", - "version": "3.1.0", + "version": "3.1.1", "date": "20/10/2019", "author": "Junta de Andalucía", "org": "Junta de Andalucía", diff --git a/mapea-js/src/plugins/measurebar/facade/js/measurebar.js b/mapea-js/src/plugins/measurebar/facade/js/measurebar.js index f0d615cba..43de59ee4 100644 --- a/mapea-js/src/plugins/measurebar/facade/js/measurebar.js +++ b/mapea-js/src/plugins/measurebar/facade/js/measurebar.js @@ -104,6 +104,13 @@ export default class Measurebar extends M.Plugin { }); } this.controls_ = [this.measureLength_, this.measureArea_, this.measureClear_]; + this.measureLength_.on(M.evt.ADDED_TO_MAP, () => { + this.measureArea_.on(M.evt.ADDED_TO_MAP, () => { + this.measureClear_.on(M.evt.ADDED_TO_MAP, () => { + this.fire(M.evt.ADDED_TO_MAP); + }); + }); + }); this.map_.panel.TOOLS.addControls(this.controls_); this.panel_ = this.map_.panel.TOOLS; this.map_.addPanels(this.panel_); diff --git a/mapea-js/src/plugins/printerdos/.mplugin b/mapea-js/src/plugins/printerdos/.mplugin index fb906a97c..8406471a5 100644 --- a/mapea-js/src/plugins/printerdos/.mplugin +++ b/mapea-js/src/plugins/printerdos/.mplugin @@ -1,3 +1,3 @@ { - "version": "4.1.0" + "version": "4.2.0" } diff --git a/mapea-js/src/plugins/printerdos/api.json b/mapea-js/src/plugins/printerdos/api.json index edee9cac9..dd5610626 100644 --- a/mapea-js/src/plugins/printerdos/api.json +++ b/mapea-js/src/plugins/printerdos/api.json @@ -50,10 +50,10 @@ "files": { "ol": { "scripts": [ - "printerdos-4.1.0.ol.min.js" + "printerdos-4.2.0.ol.min.js" ], "styles": [ - "printerdos-4.1.0.min.css" + "printerdos-4.2.0.min.css" ] } }, @@ -64,7 +64,7 @@ "name": "Printer", "description": "Tool for printing maps.", "text": "", - "version": "4.1.0", + "version": "4.2.0", "date": "11/10/2019", "author": "Junta de Andalucía", "org": "Junta de Andalucía", diff --git a/mapea-js/src/plugins/printerdos/impl/ol/js/printercontrol.js b/mapea-js/src/plugins/printerdos/impl/ol/js/printercontrol.js index 07daf70c1..045bc1354 100644 --- a/mapea-js/src/plugins/printerdos/impl/ol/js/printercontrol.js +++ b/mapea-js/src/plugins/printerdos/impl/ol/js/printercontrol.js @@ -104,6 +104,8 @@ export default class PrinterControl extends M.impl.Control { this.encodeWMTS(layer).then((encodedLayer) => { success(encodedLayer); }); + } else if (layer instanceof M.layer.MVT) { + success(this.encodeMVT(layer)); } else if (layer.type === M.layer.type.MBtiles) { // none } else if (layer.type === M.layer.type.OSM) { @@ -708,15 +710,6 @@ export default class PrinterControl extends M.impl.Control { return encodedLayer; } - /** - * This function adds the control to the specified map - * - * @public - * @function - * @param {M.Map} map to add the plugin - * @param {function} template template of this control - * @api stable - */ encodeMVT(layer) { let encodedLayer = null; let continuePrint = true; @@ -727,17 +720,14 @@ export default class PrinterControl extends M.impl.Control { continuePrint = false; } if (continuePrint) { - const projection = this.facadeMap_.getProjection(); const olLayer = layer.getImpl().getOL3Layer(); const features = layer.getFeatures(); const layerName = layer.name; const layerOpacity = olLayer.getOpacity(); const layerStyle = olLayer.getStyle(); - const geoJSONFormat = new ol.format.GeoJSON(); let bbox = this.facadeMap_.getBbox(); bbox = [bbox.x.min, bbox.y.min, bbox.x.max, bbox.y.max]; const resolution = this.facadeMap_.getMapImpl().getView().getResolution(); - const encodedFeatures = []; let nameFeature; let filter; @@ -748,23 +738,25 @@ export default class PrinterControl extends M.impl.Control { const stylesNames = {}; const stylesNamesText = {}; features.forEach((feature) => { - const geometry = feature.getGeometry(); + const geometry = feature.getImpl().getOLFeature().getGeometry(); let featureStyle; - const fStyle = feature.getStyle(); - + const fStyle = feature.getImpl().getOLFeature().getStyleFunction(); if (!M.utils.isNullOrEmpty(fStyle)) { featureStyle = fStyle; } else if (!M.utils.isNullOrEmpty(layerStyle)) { featureStyle = layerStyle; } - if (featureStyle instanceof Function) { - featureStyle = featureStyle.call(featureStyle, feature, resolution); + featureStyle = + featureStyle.call(featureStyle, feature.getImpl().getOLFeature(), resolution); } - + let styleIcon = null; if (featureStyle instanceof Array) { - // JGL20180118: prioridad al estilo que tiene SRC if (featureStyle.length > 1) { + styleIcon = !M.utils.isNullOrEmpty(featureStyle[1]) && + !M.utils.isNullOrEmpty(featureStyle[1].getImage()) && + featureStyle[1].getImage().getGlyph ? + featureStyle[1].getImage() : null; featureStyle = (!M.utils.isNullOrEmpty(featureStyle[1].getImage()) && featureStyle[1].getImage().getSrc) ? featureStyle[1] : featureStyle[0]; @@ -772,7 +764,6 @@ export default class PrinterControl extends M.impl.Control { featureStyle = featureStyle[0]; } } - if (!M.utils.isNullOrEmpty(featureStyle)) { const image = featureStyle.getImage(); const imgSize = M.utils @@ -782,21 +773,21 @@ export default class PrinterControl extends M.impl.Control { text = featureStyle.textPath; } let parseType; - if (feature.getGeometry().getType().toLowerCase() === 'multipolygon') { + if (geometry.getType().toLowerCase() === 'multipolygon') { parseType = 'polygon'; - } else if (feature.getGeometry().getType().toLowerCase() === 'multipoint') { + } else if (geometry.getType().toLowerCase() === 'multipoint') { parseType = 'point'; - } else if (feature.getGeometry().getType().toLowerCase() === 'multilinestring') { + } else if (geometry.getType().toLowerCase() === 'multilinestring') { parseType = 'line'; } else { - parseType = feature.getGeometry().getType().toLowerCase(); + parseType = geometry.getType().toLowerCase(); } const stroke = M.utils.isNullOrEmpty(image) ? featureStyle.getStroke() : (image.getStroke && image.getStroke()); const fill = M.utils.isNullOrEmpty(image) ? featureStyle.getFill() : (image.getFill && image.getFill()); - let styleText; + const pointRadius = M.utils.isNullOrEmpty(image) ? '' : (image.getRadius && image.getRadius()); const styleGeom = { type: parseType, fillColor: M.utils.isNullOrEmpty(fill) ? '#000000' : M.utils.rgbaToHex(fill.getColor()).slice(0, 7), @@ -811,6 +802,22 @@ export default class PrinterControl extends M.impl.Control { graphicHeight: imgSize[0], graphicWidth: imgSize[1], }; + if (Number.isNaN(pointRadius)) { + styleGeom.fillOpacity = 0; + styleGeom.strokeOpacity = 0; + styleGeom.pointRadius = 0; + } + const imageIcon = !M.utils.isNullOrEmpty(styleIcon) && + styleIcon.getImage ? styleIcon.getImage() : null; + if (!M.utils.isNullOrEmpty(imageIcon)) { + if (styleIcon.getRadius && styleIcon.getRadius()) { + styleGeom.pointRadius = styleIcon.getRadius && styleIcon.getRadius(); + } + if (styleIcon.getOpacity && styleIcon.getOpacity()) { + styleGeom.graphicOpacity = styleIcon.getOpacity(); + } + styleGeom.externalGraphic = imageIcon.toDataURL(); + } if (!M.utils.isNullOrEmpty(text)) { let tAlign = text.getTextAlign(); let tBLine = text.getTextBaseline(); @@ -874,8 +881,9 @@ export default class PrinterControl extends M.impl.Control { styleText = this.addAdditionalLabelOptions(styleText); } nameFeature = `draw${index}`; - - if ((!M.utils.isNullOrEmpty(geometry) && geometry.intersectsExtent(bbox)) || + const extent = geometry.getExtent(); + if ((!M.utils.isNullOrEmpty(geometry) && + ol.extent.intersects(bbox, extent)) || !M.utils.isNullOrEmpty(text)) { const styleStr = JSON.stringify(styleGeom); const styleTextStr = JSON.stringify(styleText); @@ -884,7 +892,7 @@ export default class PrinterControl extends M.impl.Control { if (M.utils.isUndefined(styleName) || M.utils.isUndefined(styleNameText)) { const symbolizers = []; let flag = 0; - if (!M.utils.isNullOrEmpty(geometry) && geometry.intersectsExtent(bbox) && + if (!M.utils.isNullOrEmpty(geometry) && ol.extent.intersects(bbox, extent) && M.utils.isUndefined(styleName)) { styleName = indexGeom; stylesNames[styleStr] = styleName; @@ -911,7 +919,16 @@ export default class PrinterControl extends M.impl.Control { } filter = `"[_gx_style ='${styleName + styleNameText}']"`; if (!M.utils.isNullOrEmpty(symbolizers)) { - const a = ` ${filter}:{"symbolizers": [${symbolizers}]}`; + let a = ` ${filter}:{"symbolizers": [${symbolizers}]}`; + if (layer.getStyle() instanceof M.style.Proportional) { + const typeFeature = feature.getGeometry().getType().toLocaleLowerCase(); + if (typeFeature.indexOf('polygon') >= 0) { + a = a.replace('polygon', 'point'); + } else if (typeFeature.indexOf('line') >= 0) { + a = a.replace('line', 'point'); + } + } + a = a.replace('linestring', 'line'); if (style !== '') { style += `,${a}`; } else { @@ -919,25 +936,27 @@ export default class PrinterControl extends M.impl.Control { } } } - - let geoJSONFeature; - if (projection.code !== 'EPSG:3857' && this.facadeMap_.getLayers().some(layerParam => (layerParam.type === M.layer.type.OSM || layerParam.type === M.layer.type.Mapbox))) { - geoJSONFeature = geoJSONFormat.writeFeatureObject(feature, { - featureProjection: projection.code, - dataProjection: 'EPSG:3857', - }); - } else { - geoJSONFeature = geoJSONFormat.writeFeatureObject(feature); + let coordinates = geometry.getFlatCoordinates(); + coordinates = + this.inflCoordArray(parseType, coordinates.slice(), 0, geometry.getEnds(), 2); + if (coordinates.length > 0) { + const geoJSONFeature = { + id: feature.getId(), + type: 'Feature', + geometry: { + type: geometry.getType(), + coordinates, + }, + }; + geoJSONFeature.properties = { + _gx_style: styleName + styleNameText, + name: nameFeature, + }; + encodedFeatures.push(geoJSONFeature); } - geoJSONFeature.properties = { - _gx_style: styleName + styleNameText, - name: nameFeature, - }; - encodedFeatures.push(geoJSONFeature); } } }, this); - if (style !== '') { style = JSON.parse(style.concat('}')); } else { @@ -948,7 +967,6 @@ export default class PrinterControl extends M.impl.Control { version: '2', }; } - encodedLayer = { type: 'Vector', style, @@ -964,6 +982,67 @@ export default class PrinterControl extends M.impl.Control { return encodedLayer; } + inflCoordinates(flatCoordinates, offset, end, stride, optCoordinates) { + const coordinates = optCoordinates !== undefined ? optCoordinates : []; + let i = 0; + for (let j = offset; j < end; j += stride) { + // eslint-disable-next-line no-plusplus + coordinates[i++] = flatCoordinates.slice(j, j + stride); + } + coordinates.length = i; + return coordinates; + } + + inflCoordArray(parseType, flatCoordinates, offset, ends, stride, optCoordinatess) { + let coordinatess = optCoordinatess !== undefined ? optCoordinatess : []; + let i = 0; + // eslint-disable-next-line no-plusplus + for (let j = 0, jj = ends.length; j < jj; ++j) { + const end = ends[j]; + const arrtmp = this.inflCoordinates( + flatCoordinates, + offset, + end, + stride, + coordinatess[i], + ); + if (parseType === 'point' || ((parseType === 'line' || parseType === 'linestring') && arrtmp.length >= 2) || (parseType === 'polygon' && arrtmp.length > 3)) { + // eslint-disable-next-line no-plusplus + coordinatess[i++] = arrtmp; + } + // eslint-disable-next-line no-param-reassign + offset = end; + } + coordinatess.length = i; + if ((parseType === 'line' || parseType === 'linestring') && coordinatess.length === 1) { + // eslint-disable-next-line no-plusplus + coordinatess = coordinatess[0]; + } + return coordinatess; + } + + inflateMultiCoordinatesArray(flatCoordinates, offset, endss, stride, optCoordinatesss) { + const coordinatesss = + optCoordinatesss !== undefined ? optCoordinatesss : []; + let i = 0; + // eslint-disable-next-line no-plusplus + for (let j = 0, jj = endss.length; j < jj; ++j) { + const ends = endss[j]; + // eslint-disable-next-line no-plusplus + coordinatesss[i++] = this.inflCoordArray( + flatCoordinates, + offset, + ends, + stride, + coordinatesss[i], + ); + // eslint-disable-next-line no-param-reassign + offset = ends[ends.length - 1]; + } + coordinatesss.length = i; + return coordinatesss; + } + /** * This function adds the control to the specified map * diff --git a/mapea-js/src/plugins/searchstreet/.mplugin b/mapea-js/src/plugins/searchstreet/.mplugin index 1271a99a0..d39c5f5a6 100644 --- a/mapea-js/src/plugins/searchstreet/.mplugin +++ b/mapea-js/src/plugins/searchstreet/.mplugin @@ -1,3 +1,3 @@ { - "version": "2.0.1" + "version": "2.1.0" } diff --git a/mapea-js/src/plugins/searchstreet/api.json b/mapea-js/src/plugins/searchstreet/api.json index e181eba34..f8db073ef 100644 --- a/mapea-js/src/plugins/searchstreet/api.json +++ b/mapea-js/src/plugins/searchstreet/api.json @@ -14,10 +14,10 @@ "files": { "ol": { "scripts": [ - "searchstreet-2.0.1.ol.min.js" + "searchstreet-2.1.0.ol.min.js" ], "styles": [ - "searchstreet-2.0.1.min.css" + "searchstreet-2.1.0.min.css" ] } }, @@ -28,7 +28,7 @@ "name": "Searchstreet", "description": "", "text": "", - "version": "2.0.1", + "version": "2.1.0", "date": "03/02/2020", "author": "Junta de Andalucía", "org": "Junta de Andalucía", diff --git a/mapea-js/src/plugins/searchstreet/facade/js/autocomplete.js b/mapea-js/src/plugins/searchstreet/facade/js/autocomplete.js index e9f316114..883946812 100644 --- a/mapea-js/src/plugins/searchstreet/facade/js/autocomplete.js +++ b/mapea-js/src/plugins/searchstreet/facade/js/autocomplete.js @@ -213,7 +213,7 @@ export default class Autocomplete extends M.Plugin { * evt - Keypress event */ hiddenAutocomplete_(evt) { - if (evt.keyCode === 27) { + if (evt.keyCode === 27 || evt.keyCode === 13) { this.cancelSearch_(evt); } } diff --git a/mapea-js/src/plugins/searchstreet/facade/js/searchstreetcontrol.js b/mapea-js/src/plugins/searchstreet/facade/js/searchstreetcontrol.js index dcbec3547..fc11b5ba8 100644 --- a/mapea-js/src/plugins/searchstreet/facade/js/searchstreetcontrol.js +++ b/mapea-js/src/plugins/searchstreet/facade/js/searchstreetcontrol.js @@ -506,7 +506,9 @@ export default class SearchstreetControl extends M.Control { this.facadeMap_.removePopup(); if (this.getImpl().listPoints.length > 0) { - this.getImpl().removePoints(); + const layers = this.facadeMap_.getLayers(); + const layerDraw = layers.filter(layer => layer.name === '__draw__')[0]; + layerDraw.removeFeatures(layerDraw.getFeatures()); } if (!M.utils.isUndefined(resultsTemplateVars.docs[0])) { this.getImpl().drawPoints(resultsTemplateVars.docs); @@ -698,7 +700,9 @@ export default class SearchstreetControl extends M.Control { clearSearchs_() { this.element_.classList.remove('shown'); this.facadeMap_.removePopup(); - this.getImpl().removePoints(); + const layers = this.facadeMap_.getLayers(); + const layerDraw = layers.filter(layer => layer.name === '__draw__')[0]; + layerDraw.removeFeatures(layerDraw.getFeatures()); this.input_.value = ''; this.resultsContainer_.innerHTML = ''; this.resultsAutocomplete_.innerHTML = ''; diff --git a/mapea-js/src/plugins/searchstreet/impl/ol/js/searchstreetcontrol.js b/mapea-js/src/plugins/searchstreet/impl/ol/js/searchstreetcontrol.js index 09ac47df8..b53fbfeb8 100644 --- a/mapea-js/src/plugins/searchstreet/impl/ol/js/searchstreetcontrol.js +++ b/mapea-js/src/plugins/searchstreet/impl/ol/js/searchstreetcontrol.js @@ -217,22 +217,6 @@ export default class SearchstreetControl extends ol.control.Control { return this.element_; } - - /** - * This function remove the points drawn on the map - * - * @private - * @function - */ - removePoints() { - for (let i = 0, ilen = this.listPoints.length; i < ilen; i += 1) { - this.facadeMap_.removeFeatures(this.listPoints[i].map(M.impl.Feature.olFeature2Facade)); - // this.facadeMap_.removeFeatures(this.listPoints[i].map(M.Feature)); - } - this.listPoints = []; - } - - /** * This function destroys this control and clearing the HTML * @@ -242,7 +226,6 @@ export default class SearchstreetControl extends ol.control.Control { */ destroy() { this.facadeMap_.areasContainer.getElementsByClassName('m-top m-right')[0].classList.remove('top-extra'); - this.removePoints(); this.facadeMap_.getMapImpl().removeControl(this); this.facadeMap_.getImpl().removePopup(); this.facadeMap_ = null; diff --git a/mapea-js/src/plugins/searchstreetgeosearch/.mplugin b/mapea-js/src/plugins/searchstreetgeosearch/.mplugin index c9e177271..d39c5f5a6 100644 --- a/mapea-js/src/plugins/searchstreetgeosearch/.mplugin +++ b/mapea-js/src/plugins/searchstreetgeosearch/.mplugin @@ -1,3 +1,3 @@ { - "version": "2.0.2" + "version": "2.1.0" } diff --git a/mapea-js/src/plugins/searchstreetgeosearch/api.json b/mapea-js/src/plugins/searchstreetgeosearch/api.json index 8e5fcb03c..56ab28bd4 100644 --- a/mapea-js/src/plugins/searchstreetgeosearch/api.json +++ b/mapea-js/src/plugins/searchstreetgeosearch/api.json @@ -14,10 +14,10 @@ "files": { "ol": { "scripts": [ - "searchstreetgeosearch-2.0.2.ol.min.js" + "searchstreetgeosearch-2.1.0.ol.min.js" ], "styles": [ - "searchstreetgeosearch-2.0.2.min.css" + "searchstreetgeosearch-2.1.0.min.css" ] } }, @@ -28,7 +28,7 @@ "name": "SearchstreetGeosearch", "description": "", "text": "", - "version": "2.0.2", + "version": "2.1.0", "date": "03/02/2020", "author": "Junta de Andalucía", "org": "Junta de Andalucía", diff --git a/mapea-js/src/plugins/searchstreetgeosearch/facade/js/autocomplete.js b/mapea-js/src/plugins/searchstreetgeosearch/facade/js/autocomplete.js index 9a79ad4bc..647b47d22 100644 --- a/mapea-js/src/plugins/searchstreetgeosearch/facade/js/autocomplete.js +++ b/mapea-js/src/plugins/searchstreetgeosearch/facade/js/autocomplete.js @@ -213,7 +213,7 @@ export default class Autocomplete extends M.Plugin { * evt - Keypress event */ hiddenAutocomplete_(evt) { - if (evt.keyCode === 27) { + if (evt.keyCode === 27 || evt.keyCode === 13) { this.cancelSearch_(evt); } } diff --git a/mapea-js/src/plugins/searchstreetgeosearch/facade/js/searchstreetintegratedcontrol.js b/mapea-js/src/plugins/searchstreetgeosearch/facade/js/searchstreetintegratedcontrol.js index bb0b15151..4ba4aea76 100644 --- a/mapea-js/src/plugins/searchstreetgeosearch/facade/js/searchstreetintegratedcontrol.js +++ b/mapea-js/src/plugins/searchstreetgeosearch/facade/js/searchstreetintegratedcontrol.js @@ -123,7 +123,6 @@ export default class SearchstreetIntegrated extends SearchstreetControl { const layerDraw = layers.filter(layer => layer.name === '__draw__')[0]; layerDraw.removeFeatures(layerDraw.getFeatures()); this.facadeMap_.removePopup(); - this.getImpl().removePoints(); this.input_.value = ''; this.resultsContainer_.innerHTML = ''; this.resultsAutocomplete_.innerHTML = ''; diff --git a/mapea-js/src/plugins/wfstcontrols/.mplugin b/mapea-js/src/plugins/wfstcontrols/.mplugin index 9947679bf..ff4ffa021 100644 --- a/mapea-js/src/plugins/wfstcontrols/.mplugin +++ b/mapea-js/src/plugins/wfstcontrols/.mplugin @@ -1,3 +1,3 @@ { - "version": "3.0.2" + "version": "3.0.3" } diff --git a/mapea-js/src/plugins/wfstcontrols/api.json b/mapea-js/src/plugins/wfstcontrols/api.json index d0f2ca5f7..b8e2a51cc 100644 --- a/mapea-js/src/plugins/wfstcontrols/api.json +++ b/mapea-js/src/plugins/wfstcontrols/api.json @@ -26,10 +26,10 @@ "files": { "ol": { "scripts": [ - "wfstcontrols-3.0.2.ol.min.js" + "wfstcontrols-3.0.3.ol.min.js" ], "styles": [ - "wfstcontrols-3.0.2.min.css" + "wfstcontrols-3.0.3.min.css" ] } }, @@ -40,7 +40,7 @@ "name": "WFSTControls", "description": "Tool for editing WFST layers.", "text": "", - "version": "3.0.2", + "version": "3.0.3", "date": "11/10/2019", "author": "Junta de Andalucía", "org": "Junta de Andalucía", diff --git a/mapea-js/src/plugins/wfstcontrols/facade/js/wfstcontrols.js b/mapea-js/src/plugins/wfstcontrols/facade/js/wfstcontrols.js index 50e9874fb..3faae87e2 100644 --- a/mapea-js/src/plugins/wfstcontrols/facade/js/wfstcontrols.js +++ b/mapea-js/src/plugins/wfstcontrols/facade/js/wfstcontrols.js @@ -105,6 +105,20 @@ export default class WFSTControls extends M.Plugin { * @type {Object} */ this.metadata_ = api.metadata; + + /** + * Number controls + * @private + * @type {Object} + */ + this.numControls_ = 0; + + /** + * Number load controls + * @private + * @type {Object} + */ + this.numLoadControls_ = 0; } /** @@ -141,31 +155,56 @@ export default class WFSTControls extends M.Plugin { this.controls_.push(this.drawfeature_); addSave = true; addClear = true; + this.numControls_ += 1; + this.drawfeature_.on(M.evt.ADDED_TO_MAP, () => { + this.checkAddControlsToMap(); + }); } else if (this.controls[i] === 'modifyfeature') { this.modifyfeature_ = new ModifyFeature(wfslayer); this.controls_.push(this.modifyfeature_); addSave = true; addClear = true; + this.numControls_ += 1; + this.modifyfeature_.on(M.evt.ADDED_TO_MAP, () => { + this.checkAddControlsToMap(); + }); } else if (this.controls[i] === 'deletefeature') { this.deletefeature_ = new DeleteFeature(wfslayer); this.controls_.push(this.deletefeature_); addSave = true; addClear = true; + this.numControls_ += 1; + this.deletefeature_.on(M.evt.ADDED_TO_MAP, () => { + this.checkAddControlsToMap(); + }); } else if (this.controls[i] === 'editattribute') { this.editattibute_ = new EditAttribute(wfslayer); this.controls_.push(this.editattibute_); addClear = true; + this.numControls_ += 1; + this.editattibute_.on(M.evt.ADDED_TO_MAP, () => { + this.checkAddControlsToMap(); + }); } } if (addSave) { this.savefeature_ = new SaveFeature(wfslayer); this.controls_.push(this.savefeature_); + this.numControls_ += 1; + this.savefeature_.on(M.evt.ADDED_TO_MAP, () => { + this.checkAddControlsToMap(); + }); } if (addClear) { this.clearfeature_ = new ClearFeature(wfslayer); this.controls_.push(this.clearfeature_); + this.numControls_ += 1; + this.clearfeature_.on(M.evt.ADDED_TO_MAP, () => { + this.checkAddControlsToMap(); + }); } + this.panel_.addControls(this.controls_); this.map_.addPanels(this.panel_); this.map_.panel.EDITION = this.panel_; @@ -279,6 +318,20 @@ export default class WFSTControls extends M.Plugin { getMetadata() { return this.metadata_; } + + /** + * This function return the control of plugin + * + * @public + * @function + * @api stable + */ + checkAddControlsToMap() { + this.numLoadControls_ += 1; + if (this.numLoadControls_ === this.numControls_) { + this.fire(M.evt.ADDED_TO_MAP); + } + } } /** diff --git a/mapea-js/src/plugins/wfstcontrols/impl/ol/js/editattribute.js b/mapea-js/src/plugins/wfstcontrols/impl/ol/js/editattribute.js index 737fd9b8b..54a602421 100644 --- a/mapea-js/src/plugins/wfstcontrols/impl/ol/js/editattribute.js +++ b/mapea-js/src/plugins/wfstcontrols/impl/ol/js/editattribute.js @@ -96,6 +96,12 @@ export default class EditAttribute extends M.impl.Control { icon: 'g-cartografia-texto', title: POPUP_TITLE, content: htmlAsText, + listeners: [{ + selector: '#m-button-editattributeSave', + all: true, + type: 'click', + callback: e => this.saveAttributes_(e), + }], }; this.popup_ = this.facadeMap_.getPopup(); if (!M.utils.isNullOrEmpty(this.popup_)) { @@ -115,21 +121,6 @@ export default class EditAttribute extends M.impl.Control { this.popup_.addTab(popupContent); this.facadeMap_.addPopup(this.popup_, coordinate); } - - // adds save button events on show - const popupButton = this.popup_.getContent().querySelector('button#m-button-editattributeSave'); - if (!M.utils.isNullOrEmpty(popupButton)) { - popupButton.addEventListener('click', this.saveAttributes_.bind(this)); - } - - // removes events on destroy - this.popup_.on(M.evt.DESTROY, () => { - const popupButton2 = this.popup_.getContent().querySelector('button#m-button-editattributeSave'); - if (!M.utils.isNullOrEmpty(popupButton2)) { - popupButton.removeEventListener('click', this.saveAttributes_.bind(this)); - } - this.unselectFeature_(); - }, this); } } @@ -194,6 +185,7 @@ export default class EditAttribute extends M.impl.Control { } else { M.dialog.error('Ha ocurrido un error al guardar: '.concat(response.text)); } + this.unselectFeature_(); }); }); } diff --git a/mapea-js/src/plugins/wfstcontrols/impl/ol/js/savefeature.js b/mapea-js/src/plugins/wfstcontrols/impl/ol/js/savefeature.js index 14f1f1ada..20168db12 100644 --- a/mapea-js/src/plugins/wfstcontrols/impl/ol/js/savefeature.js +++ b/mapea-js/src/plugins/wfstcontrols/impl/ol/js/savefeature.js @@ -99,7 +99,6 @@ export default class SaveFeature extends M.impl.Control { const wfstRequestText = oSerializer.serializeToString(wfstRequestXml); // const wfstRequestText = goog.dom.xml.serialize(wfstRequestXml); - M.proxy(false); M.remote.post(this.layer_.url, wfstRequestText).then((response) => { // clears layer const clearCtrl = this.facadeMap_.getControls(FClearFeature.NAME)[0]; @@ -112,7 +111,6 @@ export default class SaveFeature extends M.impl.Control { M.dialog.error('Ha ocurrido un error al guardar: '.concat(response.text)); } }); - M.proxy(true); }); } diff --git a/mapea-js/tasks/prepare-package/configuration-npm.js b/mapea-js/tasks/prepare-package/configuration-npm.js index 970160316..94db740fd 100644 --- a/mapea-js/tasks/prepare-package/configuration-npm.js +++ b/mapea-js/tasks/prepare-package/configuration-npm.js @@ -1,11 +1,11 @@ const configuration = { MOBILE_WIDTH: 768, - MAPEA_URL: window.location.protocol + '//sigc.desarrollo.guadaltel.es/mapea6', - PROXY_URL: window.location.protocol + '//sigc.desarrollo.guadaltel.es/mapea6/api/proxy', - PROXY_POST_URL: window.location.protocol + '//sigc.desarrollo.guadaltel.es/mapea6/proxyPost', + MAPEA_URL: 'https://sigc.desarrollo.guadaltel.es/mapea6', + PROXY_URL: 'https://sigc.desarrollo.guadaltel.es/mapea6/api/proxy', + PROXY_POST_URL: 'https://sigc.desarrollo.guadaltel.es/mapea6/proxyPost', TEMPLATES_PATH: '/files/templates/', - THEME_URL: window.location.protocol + '//sigc.desarrollo.guadaltel.es/mapea6/assets/', - GEOSEARCH_URL: window.location.protocol + '//geobusquedas-sigc.juntadeandalucia.es', + THEME_URL: 'https://sigc.desarrollo.guadaltel.es/mapea6/assets/', + GEOSEARCH_URL: 'https://geobusquedas-sigc.juntadeandalucia.es', GEOSEARCH_CORE: 'sigc', GEOSEARCH_HANDLER: '/search?', GEOSEARCH_DISTANCE: '600', @@ -13,19 +13,19 @@ const configuration = { GEOSEARCH_ROWS: '20', GEOSEARCHBYLOCATION_ROWS: '100', predefinedWMC: { - 'urls': '//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/mapa.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/hibrido.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/satelite.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_callejero.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_hibrido.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_satelite.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/contextCallejeroCache.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/contextCallejero.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/contextIDEA.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/contextOrtofoto2009.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/callejero2011cache.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/ortofoto2011cache.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/hibrido2011cache.xml,//sigc.desarrollo.guadaltel.es/mapea6/files/wmc/contextOrtofoto.xml'.split(',').map(e => window.location.protocol + e), + 'urls': 'https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/mapa.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/hibrido.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/satelite.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_callejero.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_hibrido.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_satelite.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/contextCallejeroCache.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/contextCallejero.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/contextIDEA.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/contextOrtofoto2009.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/callejero2011cache.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/ortofoto2011cache.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/hibrido2011cache.xml,https://sigc.desarrollo.guadaltel.es/mapea6/files/wmc/contextOrtofoto.xml'.split(',').map(e => e), 'predefinedNames': 'mapa,hibrido,satelite,cdau,cdau_hibrido,cdau_satelite,callejerocacheado,callejero,idea,ortofoto09,callejero2011cache,ortofoto2011cache,hibrido2011cache,ortofoto'.split(','), 'names': 'Mapa,Hibrido,Satelite,Callejero,Hibrido,Satelite,mapa callejero cache,mapa del callejero,mapa idea,mapa ortofoto09,Callejero,Ortofoto,H??brido,mapa ortofoto'.split(','), }, tileMappgins: { tiledNames: 'base,SPOT_Andalucia,orto_2010-11_25830,CallejeroCompleto,orto_2010-11_23030'.split(','), - tiledUrls: '//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.ideandalucia.es/geowebcache/service/wms?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,//www.ideandalucia.es/geowebcache/service/wms?'.split(',').map(e => window.location.protocol + e), + tiledUrls: 'https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.ideandalucia.es/geowebcache/service/wms?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,https://www.ideandalucia.es/geowebcache/service/wms?'.split(',').map(e => e), names: 'CDAU_base,mosaico_spot_2005,orto_2010-11,CallejeroCompleto,orto_2010-11'.split(','), - urls: '//www.callejerodeandalucia.es/servicios/base/wms?,//www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,//www.ideandalucia.es/wms/ortofoto2010?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms?,//www.ideandalucia.es/wms/ortofoto2010?'.split(',').map(e => window.location.protocol + e), + urls: 'https://www.callejerodeandalucia.es/servicios/base/wms?,https://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,https://www.ideandalucia.es/wms/ortofoto2010?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms?,https://www.ideandalucia.es/wms/ortofoto2010?'.split(',').map(e => e), }, DEFAULT_PROJ: 'EPSG:25830*m', geoprint: { - URL: window.location.protocol + '//geoprint-sigc.juntadeandalucia.es/geoprint/pdf', + URL: 'https://geoprint-sigc.juntadeandalucia.es/geoprint/pdf', DPI: 120, FORMAT: 'pdf', TEMPLATE: 'A4 landscape (SIGC,', @@ -33,17 +33,17 @@ const configuration = { LEGEND: true }, geoprint2: { - URL: window.location.protocol + '//geoprint.desarrollo.guadaltel.es/print/SIGC', - URL_APPLICATION: window.location.protocol + '//geoprint.desarrollo.guadaltel.es', + URL: 'https://geoprint.desarrollo.guadaltel.es/print/SIGC', + URL_APPLICATION: 'https://geoprint.desarrollo.guadaltel.es', }, panels: { TOOLS: 'measurebar,measurelength,measureclear,measurearea,getfeatureinfo'.split(','), EDITION: 'drawfeature,modifyfeature,deletefeature,editattribute,savefeature,clearfeature'.split(','), }, - SEARCHSTREET_URL: window.location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs', - SEARCHSTREET_URLCODINEAUTOCOMPLETE: window.location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio', - SEARCHSTREET_URLCOMPROBARINE: window.location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne', - SEARCHSTREET_NORMALIZAR: window.location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar', + SEARCHSTREET_URL: 'https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs', + SEARCHSTREET_URLCODINEAUTOCOMPLETE: 'https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio', + SEARCHSTREET_URLCOMPROBARINE: 'https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne', + SEARCHSTREET_NORMALIZAR: 'https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar', AUTOCOMPLETE_MINLENGTH: '3', AUTOCOMPLETE_DELAYTIME: '750', AUTOCOMPLETE_LIMIT: '10', @@ -52,7 +52,7 @@ const configuration = { MAPBOX_TOKEN_NAME: 'access_token', MAPBOX_TOKEN_VALUE: 'pk.eyJ1IjoiZ3VhZGFsdGVsc2lnYyIsImEiOiJjaXppOTE0M2wwMDNiMzNvM3JiZ2h4Zmt3In0.MHjbdKBozmgW0T8LhGDcAA', ATTRIBUTETABLE_PAGES: '5', - SQL_WASM_URL: window.location.protocol + '//sigc.desarrollo.guadaltel.es/mapea6/wasm/', + SQL_WASM_URL: 'https://sigc.desarrollo.guadaltel.es/mapea6/wasm/', } export default configuration; diff --git a/mapea-js/test/configuration_filtered.js b/mapea-js/test/configuration_filtered.js index 5bd4e6914..db087c56e 100644 --- a/mapea-js/test/configuration_filtered.js +++ b/mapea-js/test/configuration_filtered.js @@ -24,7 +24,7 @@ function fun(M_) { * @public * @api stable */ - M_.config('MAPEA_URL', location.protocol + '//sigc-dev.desarrollo.guadaltel.es/mapea6'); + M_.config('MAPEA_URL', 'https://sigc-dev-ol.desarrollo.guadaltel.es/mapea6'); /** * The path to the Mapea proxy to send @@ -34,7 +34,7 @@ function fun(M_) { * @public * @api stable */ - M_.config('PROXY_URL', location.protocol + '//sigc-dev.desarrollo.guadaltel.es/mapea6/api/proxy'); + M_.config('PROXY_URL', 'https://sigc-dev-ol.desarrollo.guadaltel.es/mapea6/api/proxy'); /** * The path to the Mapea proxy to send @@ -44,7 +44,7 @@ function fun(M_) { * @public * @api stable */ - M_.config('PROXY_POST_URL', location.protocol + '//sigc-dev.desarrollo.guadaltel.es/mapea6/proxyPost'); + M_.config('PROXY_POST_URL', 'https://sigc-dev-ol.desarrollo.guadaltel.es/mapea6/proxyPost'); /** * The path to the Mapea templates @@ -62,7 +62,7 @@ function fun(M_) { * @public * @api stable */ - M_.config('THEME_URL', location.protocol + '//mapea4-sigc.juntadeandalucia.es/mapea/assets/'); + M_.config('THEME_URL', 'https://mapea4-sigc.juntadeandalucia.es/mapea/assets/'); /** * The Geosearch URL @@ -71,7 +71,7 @@ function fun(M_) { * @public * @api stable */ - M_.config('GEOSEARCH_URL', location.protocol + '//geobusquedas-sigc.juntadeandalucia.es'); + M_.config('GEOSEARCH_URL', 'https://geobusquedas-sigc.juntadeandalucia.es'); /** * The Geosearch core @@ -142,7 +142,7 @@ function fun(M_) { * @public * @api stable */ - 'urls': '//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/context_cdau_callejero.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/context_cdau_hibrido.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/context_cdau_satelite.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextCallejeroCache.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextCallejero.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextIDEA.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextOrtofoto2009.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/callejero2011cache.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/ortofoto2011cache.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/hibrido2011cache.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextOrtofoto.xml'.split(',').map(e => location.protocol + e), + 'urls': 'https://mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/context_cdau_callejero.xml,https://mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/context_cdau_hibrido.xml,https://mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/context_cdau_satelite.xml,https://mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextCallejeroCache.xml,https://mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextCallejero.xml,https://mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextIDEA.xml,https://mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextOrtofoto2009.xml,https://mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/callejero2011cache.xml,https://mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/ortofoto2011cache.xml,https://mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/hibrido2011cache.xml,https://mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextOrtofoto.xml'.split(',').map(e => e), /** * WMC predefined names @@ -186,7 +186,7 @@ function fun(M_) { * @public * @api stable */ - 'tiledUrls': '//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.ideandalucia.es/geowebcache/service/wms?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,//www.ideandalucia.es/geowebcache/service/wms?'.split(',').map(e => location.protocol + e), + 'tiledUrls': 'https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.ideandalucia.es/geowebcache/service/wms?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,https://www.ideandalucia.es/geowebcache/service/wms?'.split(',').map(e => e), /** * WMC context names @@ -204,7 +204,7 @@ function fun(M_) { * @public * @api stable */ - 'urls': '//www.callejerodeandalucia.es/servicios/base/wms?,//www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,//www.ideandalucia.es/wms/ortofoto2010?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms?,//www.ideandalucia.es/wms/ortofoto2010?'.split(',').map(e => location.protocol + e) + 'urls': 'https://www.callejerodeandalucia.es/servicios/base/wms?,https://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,https://www.ideandalucia.es/wms/ortofoto2010?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms?,https://www.ideandalucia.es/wms/ortofoto2010?'.split(',').map(e => e) }); /** @@ -230,7 +230,7 @@ function fun(M_) { * @public * @api stable */ - 'URL': location.protocol + '//geoprint-sigc.juntadeandalucia.es/geoprint/pdf', + 'URL': 'https://geoprint-sigc.juntadeandalucia.es/geoprint/pdf', /** * WMC predefined names @@ -292,7 +292,7 @@ function fun(M_) { * @public * @api stable */ - 'URL': location.protocol + '//geoprint.desarrollo.guadaltel.es/print/SIGC', + 'URL': 'https://geoprint.desarrollo.guadaltel.es/print/SIGC', /** * Printer service URL @@ -301,7 +301,7 @@ function fun(M_) { * @public * @api stable */ - 'URL_APPLICATION': location.protocol + '//geoprint.desarrollo.guadaltel.es', + 'URL_APPLICATION': 'https://geoprint.desarrollo.guadaltel.es', }); /** @@ -338,7 +338,7 @@ function fun(M_) { * @public * @api stable */ - M_.config('SEARCHSTREET_URL', location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs'); + M_.config('SEARCHSTREET_URL', 'https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs'); /** * Autocomplete municipality service URL @@ -347,7 +347,7 @@ function fun(M_) { * @public * @api stable */ - M_.config('SEARCHSTREET_URLCODINEAUTOCOMPLETE', location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio'); + M_.config('SEARCHSTREET_URLCODINEAUTOCOMPLETE', 'https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio'); /** * service URL check code INE @@ -356,7 +356,7 @@ function fun(M_) { * @public * @api stable */ - M_.config('SEARCHSTREET_URLCOMPROBARINE', location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne'); + M_.config('SEARCHSTREET_URLCOMPROBARINE', 'https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne'); /** * Normalizar searchstreet service URL @@ -365,7 +365,7 @@ function fun(M_) { * @public * @api stable */ - M_.config('SEARCHSTREET_NORMALIZAR', location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar'); + M_.config('SEARCHSTREET_NORMALIZAR', 'https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar'); /** * Minimum number of characters to start autocomplete diff --git a/mapea-js/test/development/attribute.html b/mapea-js/test/development/attribute.html new file mode 100644 index 000000000..f3680da80 --- /dev/null +++ b/mapea-js/test/development/attribute.html @@ -0,0 +1,40 @@ + + + + + + + + + + + + + PRUEBA PRINTER + + + + + +
+ + + + + + + \ No newline at end of file diff --git a/mapea-js/test/development/attribute.js b/mapea-js/test/development/attribute.js new file mode 100644 index 000000000..c2f7dd3d2 --- /dev/null +++ b/mapea-js/test/development/attribute.js @@ -0,0 +1,130 @@ +import Attributetable from 'plugins/attributetable/facade/js/attributetable'; + +const mapjs = M.map({ + container: 'map', + controls: ['layerswitcher', 'getfeatureinfo'], +}); + + + +const estiloSeleccion = new M.style.Generic({ + point: { + radius: 5, + fill: { + color: 'red', + opacity: 1, + }, + stroke: { + color: 'red', + width: 2, + }, + }, + polygon: { + fill: { + color: 'red', + opacity: 0.6, + }, + stroke: { + color: 'yellow', + width: 1, + }, + }, + line: { + stroke: { + color: 'red', + width: 2, + }, + fill: { + color: 'red', + width: 2, + opacity: 0.6, + }, + }, +}); + +const attributetable = new Attributetable({ pages: 5 /* , selectedStyle:estiloSeleccion */ }); +mapjs.addPlugin(attributetable); + +let campamentosa = new M.layer.GeoJSON({ + name: "Campamentos", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/sepim/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=sepim:campamentos&outputFormat=application/json&", + extract: true, + legend: 'Campamentos A' +}); +window.campamentosa = campamentosa; + +let conduccion = new M.layer.GeoJSON({ + name: "Conduccion", + url: "http://www.ideandalucia.es/services/DERA_g3_hidrografia/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=DERA_g3_hidrografia:g03_08_Conduccion&TYPENAME=DERA_g3_hidrografia:g03_08_Conduccion&STARTINDEX=0&COUNT=1000000&SRSNAME=urn:ogc:def:crs:EPSG::25830&OUTPUTFORMAT=json", + extract: true, + legend: 'Conduccion' +}); +window.conduccion = conduccion; + +let campamentosB = new M.layer.GeoJSON({ + name: "Campamentos", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/sepim/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=sepim:campamentos&outputFormat=application/json&", + extract: true, + legend: 'Campamentos b' +}); + +let provincias = new M.layer.GeoJSON({ + name: "Provincias", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=tematicos:Provincias&maxFeatures=50&outputFormat=application%2Fjson", + extract: true, + legend: 'Provincias' +}); + +window.provincias = provincias; + + +let estiloPunto = new M.style.Generic({ + point: { + radius: 5, + fill: { + color: 'orange', + opacity: '0.8' + }, + stroke: { + color: 'red', + width: 1, + }, + icon: { + src: 'http://mapea4-sigc.juntadeandalucia.es/assets/img/m-pin-24-sel.svg', + rotation: 0, + scale: 1, + opacity: 0.8, + anchor: [0.5, 1], + rotate: false, + }, + } + }); + + campamentosa.setStyle(estiloPunto); + + +mapjs.addLayers([/*, campamentosB,*/ provincias,campamentosa,conduccion]); + +let verde = new M.style.Polygon({fill: {color: 'green'}}); +let amarillo = new M.style.Polygon({fill: {color: 'pink'}}); +let rojo = new M.style.Polygon({fill: {color: 'red'}}); +let azul = new M.style.Polygon({fill: {color: 'grey'}}); +let naranja = new M.style.Polygon({fill: {color: 'orange'}}); +let marron = new M.style.Polygon({fill: {color: 'brown'}}); +let magenta = new M.style.Polygon({fill: {color: '#e814d9'}}); +let morado = new M.style.Polygon({fill: {color: '#b213dd'}}); + +// Creamos la simbologia. El atributo "provincia" contiene el nombre +// de la provincia a la que pertenece cada feature +let categoryStyle = new M.style.Category("nombre", { + "Almería": marron, + "Cádiz": amarillo, + "Córdoba": magenta, + "Granada": verde, + "Jaén": naranja, + "Málaga": azul, + "Sevilla": rojo, + "Huelva": morado +}); + +provincias.setStyle(categoryStyle); diff --git a/mapea-js/test/production/jsfiddle/OSM.html b/mapea-js/test/production/jsfiddle/OSM.html new file mode 100644 index 000000000..57ad4eb6d --- /dev/null +++ b/mapea-js/test/production/jsfiddle/OSM.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/OSM.js b/mapea-js/test/production/jsfiddle/OSM.js new file mode 100644 index 000000000..b7e0e9eb5 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/OSM.js @@ -0,0 +1,8 @@ +let mapajs = M.map({ + container: "map", + layers: [new M.layer.OSM()], + center: [-543431, 4503560], + controls: ["layerswitcher", "mouse"], + zoom: 6, + projection: "EPSG:3857*m" +}); diff --git a/mapea-js/test/production/jsfiddle/basic-lineas.html b/mapea-js/test/production/jsfiddle/basic-lineas.html new file mode 100644 index 000000000..9d6bc7924 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/basic-lineas.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/basic-lineas.js b/mapea-js/test/production/jsfiddle/basic-lineas.js new file mode 100644 index 000000000..f83045644 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/basic-lineas.js @@ -0,0 +1,87 @@ +var mapajs = M.map({ + container: "map", + controls: ["layerswitcher"], + wmcfiles: ["mapa"], + center: [235661, 4139173], + zoom: 8 +}); + +var gasoductos = new M.layer.WFS({ + url: "http://www.ideandalucia.es/dea100/wfs?", + name: "dea100:ie03_gasoducto", + legend: "Gasoductos", + geometry: 'MLINE', + extract: true +}); + +let estiloLinea = new M.style.Line({ + // borde de la linea + 'stroke': { + // color del borde + color: 'black', + // grosor del borde en pixeles + width: 5, + linedash: [2, 2, 10], + //linedashoffset: 20, + //linecap: 'round', + //linejoin: 'miter', + //miterlimit: 15 + }, + // Relleno de la linea + 'fill': { + color: 'yellow', + width: 3, + opacity: 1, + }, + 'label': { + text: function(feature) { + return stringDivider(feature.getAttribute('nombre'), 16, '\n'); + }, + font: 'bold italic 12px Comic Sans MS', + rotate: false, + scale: 1, + offset: [0, 0], + color: '#ffffff', + stroke: { + color: '#000000', + width: 5, + //linedash: [1, 5], + //linedashoffset: 5, + //linecap: 'square', + //linejoin: 'miter', + //miterlimit: 15 + }, + rotate: false, + rotation: 0.7, + align: M.style.align.LEFT, + baseline: M.style.baseline.TOP, + //textoverflow: 'hidden', + //minwidth: 10, + //path: true + } +}); + +gasoductos.setStyle(estiloLinea); + +mapajs.addLayers(gasoductos); + +//https://stackoverflow.com/questions/14484787/wrap-text-in-javascript +function stringDivider(str, width, spaceReplacer) { + if (str.length > width) { + var p = width; + while (p > 0 && (str[p] != ' ' && str[p] != '-')) { + p--; + } + if (p > 0) { + var left; + if (str.substring(p, p + 1) == '-') { + left = str.substring(0, p + 1); + } else { + left = str.substring(0, p); + } + var right = str.substring(p + 1); + return left + spaceReplacer + stringDivider(right, width, spaceReplacer); + } + } + return str; +} diff --git a/mapea-js/test/production/jsfiddle/basic-map.html b/mapea-js/test/production/jsfiddle/basic-map.html new file mode 100644 index 000000000..82db4004c --- /dev/null +++ b/mapea-js/test/production/jsfiddle/basic-map.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/basic-map.js b/mapea-js/test/production/jsfiddle/basic-map.js new file mode 100644 index 000000000..cb7ab36da --- /dev/null +++ b/mapea-js/test/production/jsfiddle/basic-map.js @@ -0,0 +1,3 @@ +mapajs = M.map({ + container: "map" +}); diff --git a/mapea-js/test/production/jsfiddle/basic-poligonos.html b/mapea-js/test/production/jsfiddle/basic-poligonos.html new file mode 100644 index 000000000..fbe31af44 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/basic-poligonos.html @@ -0,0 +1,164 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+
Loading…
+ + + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/basic-poligonos.js b/mapea-js/test/production/jsfiddle/basic-poligonos.js new file mode 100644 index 000000000..3e247763b --- /dev/null +++ b/mapea-js/test/production/jsfiddle/basic-poligonos.js @@ -0,0 +1,106 @@ +let mapajs = M.map({ + container: "map", + controls: ["layerswitcher"], + wmcfiles: ["mapa"] +}); + +let distritosSan = new M.layer.WFS({ + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows", + name: "distrito_sanitario", + legend: "Distritos Sanitarios", + geometry: 'POLYGON', + ids: '28', //para probar más rápido + extract: true +}); + +distritosSan.on(M.evt.LOAD, e => document.querySelector(".loading").style.display = 'none'); + + + +let stylePol = new M.style.Polygon({ + //Relleno del polígono + fill: { + //patrón de relleno + pattern: { + fill: { + //color de relleno + color: '#6A0888', + //opacidad del relleno + opacity: 0.5, + + }, + //pattern no puede cambiarse de color? + //nombre del patron + name: M.style.pattern.SQUARE, + //tamaño del patrón + size: 5, + //escala del patrón + scale: 1.3, + spacing: 10, + //rotación del patrón + rotation: 20 + //SOLO ICONO: + //si name=ICON + /*'class': 'g-cartografia-save', + //si name=IMAGE + 'src': 'http://www.juntadeandalucia.es/prueba/icon.png', + "offset": [21, 21], + "fill": { + 'color': '#fff', + 'opacity': 0.5 + }*/ + } + }, + //línea del polígono + stroke: { + //color de la lína + color: '#ff5588', + //ancho de la línea + width: 4, + /*linedash: [10, 20],??? + linedashoffset: 0, + linecap: 'square', + linejoin: 'miter', + miterlimit: 15*/ + }, + //etiqueta del polígono + label: { + //texto de la etiqueta: fijo, función o atributo + text: '{{distrito}}', + //fuente de la etiqueta + font: 'bold italic 16px Courier New', + //escala de la etiqueta + scale: 0.9, + //desplazamiento de la etiqueta en píxeles [x,y] + offset: [10, 0], + //color del texto + color: '#000', + //borde del texto + stroke: { + //color del borde + color: '#FFF', + //tamaño del borde + width: 5, + /*linedash: [1, 20], //???? + linedashoffset: 60, + linecap: 'square', + linejoin: 'miter', + miterlimit: 15*/ + }, + rotate: false, //¿¿no hace nada?? + //rotación de la etiqueta + rotation: 0.3, + // Alineación horizontal respecto a la geometría + // CENTER|LEFT|RIGHT + align: M.style.align.CENTER, + // Alineación vertical respecto a la etiqueta + // TOP|BOTTOM|MIDDLE + baseline: M.style.baseline.TOP + } +}); +distritosSan.setStyle(stylePol); + +mapajs.addLayers(distritosSan); + + +// TODO: Activar el etiquetado cuando HOVER diff --git a/mapea-js/test/production/jsfiddle/basic-puntos.html b/mapea-js/test/production/jsfiddle/basic-puntos.html new file mode 100644 index 000000000..4b4a8fec2 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/basic-puntos.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/basic-puntos.js b/mapea-js/test/production/jsfiddle/basic-puntos.js new file mode 100644 index 000000000..271a85e0d --- /dev/null +++ b/mapea-js/test/production/jsfiddle/basic-puntos.js @@ -0,0 +1,90 @@ +var mapajs = M.map({ + container: "map", + controls: ["layerswitcher"], + wmcfiles: ["mapa"] +}); + + +var campamentos = new M.layer.WFS({ + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/sepim/ows", + name: "sepim:campamentos", + legend: "Campamentos", + geometry: 'POINT', + extract: true +}); + + + +let estiloPunto = new M.style.Point({ + radius: 5, + fill: { + color: 'orange', + opacity: '0.8' + }, + stroke: { + color: 'red', + width: 1, + //linedash: [1, 20], + // linedashoffset: 60, + // linecap: 'square', + // linejoin: 'miter', + // miterlimit: 15 + }, + /*label: { + text: function(feature) { + return feature.getAttribute('nombre') + }, + font: '10px Comic Sans MS', + color: '#0000EE', + rotate: false, + scale: 1, + offset: [0, 10], + stroke: { + color: 'yellow', + width: 1 + //linedash: [1, 20], + //linedashoffset: 60, + //linecap: 'square', + //linejoin: 'miter', + //miterlimit: 15 + }, + rotation: 0, + align: M.style.align.CENTER, + baseline: M.style.baseline.TOP + },*/ + //CASO ICON SRC + icon: { + src: 'http://mapea4-sigc.juntadeandalucia.es/assets/img/m-pin-24-sel.svg', + rotation: 0, + scale: 1, + opacity: 0.8, + anchor: [0.5, 1], + //anchororigin: 'top-left', + //anchorxunits: 'fraction', + //anchoryunits: 'fraction', + rotate: false, + //offset: [10, 0], + //crossorigin: null, + //snaptopixel: true, + //offsetorigin: 'bottom-left', + //size:[10,10] + }, + //CASO ICON FontSymbol + /* icon: { + form: M.style.form.BUBBLE, + gradient: true, + //class: "g-cartografia-alerta", + //fontsize: 0.5, + radius: 10, + rotation:0, + rotate: false, + offset: [0, -12], + //color: 'blue', + fill: '#0000FF', + gradientcolor: '#FF0000', + opacity: 0.8 + }*/ +}); + +campamentos.setStyle(estiloPunto); +mapajs.addLayers(campamentos); diff --git a/mapea-js/test/production/jsfiddle/categoria.html b/mapea-js/test/production/jsfiddle/categoria.html new file mode 100644 index 000000000..7a3706f0e --- /dev/null +++ b/mapea-js/test/production/jsfiddle/categoria.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/categoria.js b/mapea-js/test/production/jsfiddle/categoria.js new file mode 100644 index 000000000..e2925bbb5 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/categoria.js @@ -0,0 +1,104 @@ +var mapajs = M.map({ + container: 'map', + controls: ["layerswitcher", "mouse", "scale", /* "overviewmap",*/ "panzoombar", "scaleline"], + wmcfiles: ["mapa"] +}); + +// Capa de municipios +let layer = new M.layer.WFS({ + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?", + namespace: "tematicos", + name: "ind_mun_simp", + legend: "Municipios SIM", + geometry: 'MPOLYGON' +}); + +mapajs.addLayers([layer]); + +// Colores para categorizar +let verdep = new M.style.Polygon({ + fill: { + color: 'green', + }, + stroke: { + color: '"black"', + } +}); + +let amarillop = new M.style.Polygon({ + fill: { + color: 'pink', + }, + stroke: { + color: '"black"', + } +}); + +let rojop = new M.style.Polygon({ + fill: { + color: 'red', + }, + stroke: { + color: '"black"', + } +}); + +let azulp = new M.style.Polygon({ + fill: { + color: 'grey', + }, + stroke: { + color: '"black"', + } +}); + +let naranjap = new M.style.Polygon({ + fill: { + color: 'orange', + }, + stroke: { + color: '"black"', + } +}); + +let marronp = new M.style.Polygon({ + fill: { + color: 'brown', + }, + stroke: { + color: '"black"', + } +}); + +let magentap = new M.style.Polygon({ + fill: { + color: '#e814d9', + }, + stroke: { + color: '"black"', + } +}); + +let moradop = new M.style.Polygon({ + fill: { + color: '#b213dd', + }, + stroke: { + color: '"black"', + } +}); + +// Se definen las relaciones valor-estilos +let categoryStylep = new M.style.Category("provincia", { + "Almería": marronp, + "Cádiz": amarillop, + "Córdoba": magentap, + "Granada": verdep, + "Jaén": naranjap, + "Málaga": azulp, + "Sevilla": rojop, + "Huelva": moradop +}); + +// Asignamos el estilo a la capa +layer.setStyle(categoryStylep); diff --git a/mapea-js/test/production/jsfiddle/cluster.html b/mapea-js/test/production/jsfiddle/cluster.html new file mode 100644 index 000000000..2f961de27 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/cluster.html @@ -0,0 +1,37 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/cluster.js b/mapea-js/test/production/jsfiddle/cluster.js new file mode 100644 index 000000000..27638422d --- /dev/null +++ b/mapea-js/test/production/jsfiddle/cluster.js @@ -0,0 +1,118 @@ + var mapajs = M.map({ + container: 'map', + controls: ["layerswitcher"] + }); + + var campamentos = new M.layer.WFS({ + legend: "Campamentos", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/wfs", + namespace: "sepim", + name: "campamentos", + geometry: 'POINT', + extract: true + }); + mapajs.addLayers(campamentos); + + campamentos.on(M.evt.SELECT_FEATURES, function(features, evt) { + if (features[0] instanceof M.ClusteredFeature) { + console.log('Es un cluster:', features[0].getAttribute('features')); + } else { + console.log('NO es un cluster:', features); + } + }); + + //Estilos para categorización + let primera = new M.style.Point({ + icon: { + src: 'https://ws058.juntadeandalucia.es/geoserver/styles/geoportal-cips/iconos/personas_victimas_genero/centroresidencial_vg.png', + scale: 0.5 + }, + }); + let segunda = new M.style.Point({ + icon: { + src: 'https://ws058.juntadeandalucia.es/geoserver/styles/geoportal-cips/iconos/sistema_de_proteccion_menores/centrodia_menores.png', + scale: 0.5 + }, + }); + let tercera = new M.style.Point({ + icon: { + src: 'https://ws058.juntadeandalucia.es/geoserver/styles/geoportal-cips/iconos/personas_con_enfermedad_mental/centroresidencial_em.png', + scale: 0.5 + }, + }); + let categoryStyle = new M.style.Category("categoria", { + "Primera": primera, + "Segunda": segunda, + "Tercera": tercera + }); + + //Estilo para cluster + let clusterOptions = { + ranges: [{ + min: 2, + max: 4, + style: new M.style.Point({ + stroke: { + color: '#5789aa' + }, + fill: { + color: '#99ccff', + }, + radius: 20 + }) + }, { + min: 5, + max: 9, + style: new M.style.Point({ + stroke: { + color: '#5789aa' + }, + fill: { + color: '#3399ff', + }, + radius: 30 + }) + }, { + min: 10, + max: 15, + style: new M.style.Point({ + stroke: { + color: '#5789aa' + }, + fill: { + color: '#004c99', + }, + radius: 40 + }) + }], + animated: true, + hoverInteraction: true, + displayAmount: true, + distance: 80, + maxFeaturesToSelect: 7 + }; + let vendorParameters = { + distanceSelectFeatures: 25, + convexHullStyle: { + fill: { + color: '#000000', + opacity: 0.5 + }, + stroke: { + color: '#000000', + width: 1 + } + } + } + let clusterStyle = new M.style.Cluster(clusterOptions, vendorParameters); + + + function setStyleCat() { + campamentos.setStyle(categoryStyle); + } + + function setStyleCluster() { + campamentos.setStyle(clusterStyle); + } + + campamentos.setStyle(clusterStyle); diff --git a/mapea-js/test/production/jsfiddle/composite.html b/mapea-js/test/production/jsfiddle/composite.html new file mode 100644 index 000000000..804e7cadd --- /dev/null +++ b/mapea-js/test/production/jsfiddle/composite.html @@ -0,0 +1,37 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/composite.js b/mapea-js/test/production/jsfiddle/composite.js new file mode 100644 index 000000000..4776cfd3f --- /dev/null +++ b/mapea-js/test/production/jsfiddle/composite.js @@ -0,0 +1,37 @@ +let map = M.map({ + container: "map" +}); + +// Capa puntual de Campamentos +var campamentos = new M.layer.GeoJSON({ + name: "Provincias", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/sepim/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=campamentos&outputFormat=application/json", + extract: true +}); + +map.addLayers(campamentos); + +// Estilo basico: puntos amarillos con borde rojo +let estilo_base = new M.style.Point({ + radius: 5, + fill: { + color: 'yellow', + opacity: 0.5 + }, + stroke: { + color: '#FF0000' + } +}); + +// Estilo cluster por defecto +let estilo_cluster = new M.style.Cluster(); + +// Cluster permite Composite, asi que se le agrega el +// estilo base +let composite = estilo_cluster.add(estilo_base); + +// Y asignamos a la capa la composicion creada +campamentos.setStyle(composite); + +// Podemos ver qué estilos tiene agregados el estilo_cluster +console.log('estilo_cluster tiene agregados los siguientes estilos:', estilo_cluster.getStyles()); diff --git a/mapea-js/test/production/jsfiddle/coropletas.html b/mapea-js/test/production/jsfiddle/coropletas.html new file mode 100644 index 000000000..da6b4d1a8 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/coropletas.html @@ -0,0 +1,41 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + + + + + + JENKS + QUANTILE + +
+ +
+ + + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/coropletas.js b/mapea-js/test/production/jsfiddle/coropletas.js new file mode 100644 index 000000000..641b7e68e --- /dev/null +++ b/mapea-js/test/production/jsfiddle/coropletas.js @@ -0,0 +1,26 @@ +let lyProv = new M.layer.WFS({ + name: "Provincias", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/wfs?", + legend: "Provincias - COROPLETAS", + geometry: 'POLYGON', +}); + +function aplicar() { + let colorInicial = document.getElementById("firstColor").value; + let colorFinal = document.getElementById("lastColor").value; + let breaks = document.getElementById("breaks").value; + let quantification = document.getElementById("JENKS").checked ? new M.style.quantification.JENKS(breaks) : new M.style.quantification.QUANTILE(breaks); + let choropleth = new M.style.Choropleth(valueField, [colorInicial, colorFinal], quantification); + layer.setStyle(choropleth); +} + +let mapajs = M.map({ + container: 'map', + controls: ["layerswitcher"], + wmcfiles: ["mapa"] +}); + +let valueField = "u_cod_prov"; +let layer = lyProv; +mapajs.addLayers(layer); +aplicar(); diff --git a/mapea-js/test/production/jsfiddle/estadisticos.html b/mapea-js/test/production/jsfiddle/estadisticos.html new file mode 100644 index 000000000..3f777c2c0 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/estadisticos.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/estadisticos.js b/mapea-js/test/production/jsfiddle/estadisticos.js new file mode 100644 index 000000000..6852be4b1 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/estadisticos.js @@ -0,0 +1,104 @@ +// En el constructor +var mapajs = M.map({ + container: "map", + controls: ["layerswitcher"] +}); + +// Con metodos +var layer = new M.layer.WFS({ + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/wfs?", + namespace: "tematicos", + name: "provincias_pob_centroides", + legend: "Provincias", + geometry: 'POINT' +}); + +mapajs.addWFS(layer); + +let stylechart = new M.style.Chart({ + type: 'pie', + donutRatio: 0.5, + radius: 25, + //offsetX: 0, + // offsetY: 0, + stroke: { + color: 'black', + width: 1 + }, + // animation: true, + scheme: M.style.chart.schemes.Custom, + // rotateWithView: true, + // fill3DColor: '#CC33DD', + variables: [{ + attribute: 'd0_15_es', + legend: '0-15 años', + fill: '#F2F2F2', + label: { + stroke: { + color: 'white', + width: 2 + }, + radiusIncrement: 10, + fill: 'black', + text: function(value, values, feature) { + return value.toString(); + }, + font: 'Comic Sans MS', + //scale: 1.25 + } + }, { + attribute: 'd16_45_es', + legend: '16-45 años', + fill: 'blue', + label: { + text: function(value, values, feature) { + return value.toString(); + }, + radiusIncrement: 10, + stroke: { + color: '#fff', + width: 2 + }, + fill: 'blue', + font: 'Comic Sans MS', + //scale: 1.25 + } + }, { + attribute: 'd45_65_es', + legend: '45-65 años', + fill: 'pink', + label: { + text: function(value, values, feature) { + // return new String(value).toString(); + return value.toString(); + }, + //radiusIncrement: 10, + stroke: { + color: '#fff', + width: 2 + }, + fill: 'red', + font: 'Comic Sans MS', + //scale: 1.25 + } + }, { + attribute: 'd65_es', + legend: '65 años o más', + fill: 'orange', + label: { + text: function(value, values, feature) { + return value.toString(); + }, + radiusIncrement: 10, + stroke: { + color: '#fff', + width: 2 + }, + fill: '#886A08', + font: 'Comic Sans MS', + //scale: 1.25 + } + }] +}); + +layer.setStyle(stylechart); diff --git a/mapea-js/test/production/jsfiddle/eventos.html b/mapea-js/test/production/jsfiddle/eventos.html new file mode 100644 index 000000000..19d670165 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/eventos.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/eventos.js b/mapea-js/test/production/jsfiddle/eventos.js new file mode 100644 index 000000000..76ac03f35 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/eventos.js @@ -0,0 +1,38 @@ +var mapajs = M.map({ + container: "map" +}); + +//Ejemplo de eventos asociados al mapa y a las capas +mapajs.on(M.evt.ADDED_LAYER, function() { + console.log('Evento M.evt.ADDED_LAYER: se ha añadido una capa al mapa'); +}); + +mapajs.on(M.evt.ADDED_WFS, function() { + console.log('Evento M.evt.ADDED_WFS: se ha añadido una capa WFS'); +}); + +mapajs.on(M.evt.ADDED_WMS, function() { + console.log('Evento M.evt.ADDED_WMS: se ha añadido una capa WMS'); +}); + +var wfslayer = new M.layer.WFS({ + url: 'http://geostematicos-sigc.juntadeandalucia.es/geoserver/sepim/ows?', + namespace: 'sepim', + name: 'campamentos', + geometry: 'POINT' +}); +mapajs.addWFS(wfslayer); + +mapajs.addWMS(new M.layer.WMS({ + url: 'http://www.idejaen.es/wms?', + name: 'ESTABLECIMIENTOS_COMERCIALES', + legend: 'Establecimientos' +})); + +wfslayer.on(M.evt.LOAD, function() { + console.log("Evento M.evt.LOAD: se ha cargado la capa WFS en el mapa"); +}); + +mapajs.on(M.evt.CLICK, function(e) { + alert("Click en " + e.coord); +}); diff --git a/mapea-js/test/production/jsfiddle/eventos1.html b/mapea-js/test/production/jsfiddle/eventos1.html new file mode 100644 index 000000000..49e8a53d1 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/eventos1.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/eventos1.js b/mapea-js/test/production/jsfiddle/eventos1.js new file mode 100644 index 000000000..291be94ff --- /dev/null +++ b/mapea-js/test/production/jsfiddle/eventos1.js @@ -0,0 +1,30 @@ +var mapajs = M.map({ + container: "map", + wmcfiles: ["mapa", "satelite", "hibrido"] +}); + +panelToolsExtra = new M.ui.Panel('toolsExtra', { + "collapsible": true, + "className": 'm-tools', + //"collapsedButtonClass": 'g-cartografia-herramienta', + "position": M.ui.position.TL +}); +var newControl = new M.control.Location(); + +newControl.on(M.evt.ADDED_TO_PANEL, function() { + console.log('Control añadido al Panel'); +}); +newControl.on(M.evt.ACTIVATED, function() { + console.log('Control Activado'); +}); +newControl.on(M.evt.DEACTIVATED, function() { + console.log('Control Desactivado'); +}); + +panelToolsExtra.addControls([newControl]); + +mapajs.addPanels(panelToolsExtra); + +mapajs.on(M.evt.CHANGE_WMC, function() { + console.log('Activado un contexto WMC'); +}); diff --git a/mapea-js/test/production/jsfiddle/eventos2.html b/mapea-js/test/production/jsfiddle/eventos2.html new file mode 100644 index 000000000..8e9938d2e --- /dev/null +++ b/mapea-js/test/production/jsfiddle/eventos2.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/eventos2.js b/mapea-js/test/production/jsfiddle/eventos2.js new file mode 100644 index 000000000..1e73ca3dd --- /dev/null +++ b/mapea-js/test/production/jsfiddle/eventos2.js @@ -0,0 +1,57 @@ +// En el constructor +let mapajs = M.map({ + container: "map", + controls: ["layerswitcher", "mouse"], + layers: ["OSM"], + projection: "EPSG:3857*m", + bbox: [-872530, 4288402, -150872, 4702896] +}); + +let geojson = new M.layer.GeoJSON({ + name: "Provincias GeoJSON", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=tematicos:Provincias&maxFeatures=50&outputFormat=application/json" +}); + +let selectedFeature; +let defaultStyle; +geojson.on(M.evt.LOAD, () => defaultStyle = geojson.getStyle()); + +let selectedStyle = new M.style.Polygon({ + fill: { + color: 'pink', + opacity: 0.5, + }, + stroke: { + color: '#FF0000', + width: 2 + } +}); + +geojson.on(M.evt.SELECT_FEATURES, function(features, evt) { + geojson.setStyle(defaultStyle, true); + selectedFeature = features[0]; + selectedFeature.setStyle(selectedStyle); + console.log('Seleccionado:', selectedFeature); +}) + +mapajs.addLayers([geojson]); + +window.seleccionar = (evt) => { + // Tomamos un feature cualquiera + console.log(evt); + selectedFeature = geojson.getFeatures()[0]; + if (selectedFeature) { + console.log(selectedFeature); + // selectedFeature.getCentroid() no es valido en este ejemplo, Multigeometría? + mapajs.getFeatureHandler().selectFeatures([selectedFeature], geojson, { coord: [-253056, 4461347] }); + selectedFeature.setStyle(selectedStyle); + } +}; + +window.deseleccionar = (evt) => { + if (selectedFeature) { + mapajs.getFeatureHandler().unselectFeatures([selectedFeature], geojson, {}); + mapajs.removePopup(); + geojson.setStyle(defaultStyle, true); + } +}; diff --git a/mapea-js/test/production/jsfiddle/feature.html b/mapea-js/test/production/jsfiddle/feature.html new file mode 100644 index 000000000..4c04ea88b --- /dev/null +++ b/mapea-js/test/production/jsfiddle/feature.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/feature.js b/mapea-js/test/production/jsfiddle/feature.js new file mode 100644 index 000000000..1f1f58a92 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/feature.js @@ -0,0 +1,19 @@ +var mapajs = M.map({ + container: "map", + wmcfiles: ["mapa"] +}); + +//GeoJSON servido +let layer = new M.layer.GeoJSON({ + name: "Provincias", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=tematicos:Provincias&maxFeatures=50&outputFormat=application/json" +}); + +mapajs.addLayers(layer); + +layer.on(M.evt.LOAD, function() { + layer.getFeatures().forEach(function(feature) { + console.log('\nId: ' + feature.getId()); + console.log('Provincia: ' + feature.getAttribute('nombre')); + }) +}); diff --git a/mapea-js/test/production/jsfiddle/filtros.html b/mapea-js/test/production/jsfiddle/filtros.html new file mode 100644 index 000000000..bce5416a2 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/filtros.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/filtros.js b/mapea-js/test/production/jsfiddle/filtros.js new file mode 100644 index 000000000..6730ecfa3 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/filtros.js @@ -0,0 +1,57 @@ + let mapajs = M.map({ + container: "map", + wmcfile: "mapa", + controls: ["layerswitcher"] + }); + + //GeoJSON servido + let lyProvincias = new M.layer.WFS({ + name: "Provincias", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/wfs", + namespace: "tematicos" + }); + let lyEnvelope = new M.layer.GeoJSON({ + source: { + "crs": { + "properties": { + "name": "EPSG:25830" + }, + "type": "name" + }, + "features": [], + "type": "FeatureCollection" + }, + name: 'envelope' + }); + + lyProvincias.on(M.evt.SELECT_FEATURES, function(features) { + + parser = new jsts.io.GeoJSONReader(); + f = parser.read(features[0].getGeoJSON()); + objEnv = f.geometry.getEnvelopeInternal(); + + fEnv = new M.Feature(features[0].getAttribute("nombre"), { + "type": "Feature", + "id": "fEnv", + "geometry": { + "type": "Polygon", + "coordinates": [ + [ + [objEnv._minx, objEnv._miny], + [objEnv._minx, objEnv._maxy], + [objEnv._maxx, objEnv._maxy], + [objEnv._maxx, objEnv._miny] + ] + ] + }, + "geometry_name": "the_geom", + "properties": { + "nombre": "envelope" + } + }); + + lyEnvelope.clear(); + lyEnvelope.addFeatures(fEnv); + }); + + mapajs.addLayers([lyProvincias, lyEnvelope]); diff --git a/mapea-js/test/production/jsfiddle/generic-lineas.html b/mapea-js/test/production/jsfiddle/generic-lineas.html new file mode 100644 index 000000000..23b949a92 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/generic-lineas.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/generic-lineas.js b/mapea-js/test/production/jsfiddle/generic-lineas.js new file mode 100644 index 000000000..75398614f --- /dev/null +++ b/mapea-js/test/production/jsfiddle/generic-lineas.js @@ -0,0 +1,89 @@ +var mapajs = M.map({ + container: "map", + controls: ["layerswitcher"], + wmcfiles: ["mapa"], + center: [235661, 4139173], + zoom: 8 +}); + +var gasoductos = new M.layer.WFS({ + url: "http://www.ideandalucia.es/dea100/wfs?", + name: "dea100:ie03_gasoducto", + legend: "Gasoductos", + geometry: 'MLINE', + extract: true +}); + +let estiloLinea = new M.style.Generic({ + line: { + // borde de la linea + 'stroke': { + // color del borde + color: 'black', + // grosor del borde en pixeles + width: 5, + linedash: [2, 2, 10], + //linedashoffset: 20, + //linecap: 'round', + //linejoin: 'miter', + //miterlimit: 15 + }, + // Relleno de la linea + 'fill': { + color: 'yellow', + width: 3, + opacity: 1, + }, + 'label': { + text: function(feature) { + return stringDivider(feature.getAttribute('nombre'), 16, '\n'); + }, + font: 'bold italic 12px Comic Sans MS', + rotate: false, + scale: 1, + offset: [0, 0], + color: '#ffffff', + stroke: { + color: '#000000', + width: 5, + //linedash: [1, 5], + //linedashoffset: 5, + //linecap: 'square', + //linejoin: 'miter', + //miterlimit: 15 + }, + rotate: false, + rotation: 0.7, + align: M.style.align.LEFT, + baseline: M.style.baseline.TOP, + //textoverflow: 'hidden', + //minwidth: 10, + //path: true + } + } +}); + +gasoductos.setStyle(estiloLinea); + +mapajs.addLayers(gasoductos); + +//https://stackoverflow.com/questions/14484787/wrap-text-in-javascript +function stringDivider(str, width, spaceReplacer) { + if (str.length > width) { + var p = width; + while (p > 0 && (str[p] != ' ' && str[p] != '-')) { + p--; + } + if (p > 0) { + var left; + if (str.substring(p, p + 1) == '-') { + left = str.substring(0, p + 1); + } else { + left = str.substring(0, p); + } + var right = str.substring(p + 1); + return left + spaceReplacer + stringDivider(right, width, spaceReplacer); + } + } + return str; +} diff --git a/mapea-js/test/production/jsfiddle/generic-poligonos.html b/mapea-js/test/production/jsfiddle/generic-poligonos.html new file mode 100644 index 000000000..81c3e5d5f --- /dev/null +++ b/mapea-js/test/production/jsfiddle/generic-poligonos.html @@ -0,0 +1,32 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+
Loading…
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/generic-poligonos.js b/mapea-js/test/production/jsfiddle/generic-poligonos.js new file mode 100644 index 000000000..476dcd7e7 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/generic-poligonos.js @@ -0,0 +1,108 @@ +let mapajs = M.map({ + container: "map", + controls: ["layerswitcher"], + wmcfiles: ["mapa"] +}); + +let distritosSan = new M.layer.WFS({ + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows", + name: "distrito_sanitario", + legend: "Distritos Sanitarios", + geometry: 'POLYGON', + ids: '28', //para probar más rápido + extract: true +}); + +distritosSan.on(M.evt.LOAD, e => document.querySelector(".loading").style.display = 'none'); + + + +let stylePol = new M.style.Generic({ + polygon: { + //Relleno del polígono + fill: { + //patrón de relleno + pattern: { + fill: { + //color de relleno + color: '#6A0888', + //opacidad del relleno + opacity: 0.5, + + }, + //pattern no puede cambiarse de color? + //nombre del patron + name: M.style.pattern.SQUARE, + //tamaño del patrón + size: 5, + //escala del patrón + scale: 1.3, + spacing: 10, + //rotación del patrón + rotation: 20 + //SOLO ICONO: + //si name=ICON + /*'class': 'g-cartografia-save', + //si name=IMAGE + 'src': 'http://www.juntadeandalucia.es/prueba/icon.png', + "offset": [21, 21], + "fill": { + 'color': '#fff', + 'opacity': 0.5 + }*/ + } + }, + //línea del polígono + stroke: { + //color de la lína + color: '#ff5588', + //ancho de la línea + width: 4, + /*linedash: [10, 20],??? + linedashoffset: 0, + linecap: 'square', + linejoin: 'miter', + miterlimit: 15*/ + }, + //etiqueta del polígono + label: { + //texto de la etiqueta: fijo, función o atributo + text: '{{distrito}}', + //fuente de la etiqueta + font: 'bold italic 16px Courier New', + //escala de la etiqueta + scale: 0.9, + //desplazamiento de la etiqueta en píxeles [x,y] + offset: [10, 0], + //color del texto + color: '#000', + //borde del texto + stroke: { + //color del borde + color: '#FFF', + //tamaño del borde + width: 5, + /*linedash: [1, 20], //???? + linedashoffset: 60, + linecap: 'square', + linejoin: 'miter', + miterlimit: 15*/ + }, + rotate: false, //¿¿no hace nada?? + //rotación de la etiqueta + rotation: 0.3, + // Alineación horizontal respecto a la geometría + // CENTER|LEFT|RIGHT + align: M.style.align.CENTER, + // Alineación vertical respecto a la etiqueta + // TOP|BOTTOM|MIDDLE + baseline: M.style.baseline.TOP + } + } +}); +distritosSan.setStyle(stylePol); + +mapajs.addLayers(distritosSan); + + +// TODO: Activar el etiquetado cuando HOVER diff --git a/mapea-js/test/production/jsfiddle/generic-puntos.html b/mapea-js/test/production/jsfiddle/generic-puntos.html new file mode 100644 index 000000000..cd0c6d93b --- /dev/null +++ b/mapea-js/test/production/jsfiddle/generic-puntos.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/generic-puntos.js b/mapea-js/test/production/jsfiddle/generic-puntos.js new file mode 100644 index 000000000..ca0abde2d --- /dev/null +++ b/mapea-js/test/production/jsfiddle/generic-puntos.js @@ -0,0 +1,92 @@ +var mapajs = M.map({ + container: "map", + controls: ["layerswitcher"], + wmcfiles: ["mapa"] +}); + + +var campamentos = new M.layer.WFS({ + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/sepim/ows", + name: "sepim:campamentos", + legend: "Campamentos", + geometry: 'POINT', + extract: true +}); + + + +let estiloPunto = new M.style.Generic({ + point: { + radius: 5, + fill: { + color: 'orange', + opacity: '0.8' + }, + stroke: { + color: 'red', + width: 1, + //linedash: [1, 20], + // linedashoffset: 60, + // linecap: 'square', + // linejoin: 'miter', + // miterlimit: 15 + }, + /*label: { + text: function(feature) { + return feature.getAttribute('nombre') + }, + font: '10px Comic Sans MS', + color: '#0000EE', + rotate: false, + scale: 1, + offset: [0, 10], + stroke: { + color: 'yellow', + width: 1 + //linedash: [1, 20], + //linedashoffset: 60, + //linecap: 'square', + //linejoin: 'miter', + //miterlimit: 15 + }, + rotation: 0, + align: M.style.align.CENTER, + baseline: M.style.baseline.TOP + },*/ + //CASO ICON SRC + icon: { + src: 'http://mapea4-sigc.juntadeandalucia.es/assets/img/m-pin-24-sel.svg', + rotation: 0, + scale: 1, + opacity: 0.8, + anchor: [0.5, 1], + //anchororigin: 'top-left', + //anchorxunits: 'fraction', + //anchoryunits: 'fraction', + rotate: false, + //offset: [10, 0], + //crossorigin: null, + //snaptopixel: true, + //offsetorigin: 'bottom-left', + //size:[10,10] + }, + //CASO ICON FontSymbol + /* icon: { + form: M.style.form.BUBBLE, + gradient: true, + //class: "g-cartografia-alerta", + //fontsize: 0.5, + radius: 10, + rotation:0, + rotate: false, + offset: [0, -12], + //color: 'blue', + fill: '#0000FF', + gradientcolor: '#FF0000', + opacity: 0.8 + }*/ + } +}); + +campamentos.setStyle(estiloPunto); +mapajs.addLayers(campamentos); diff --git a/mapea-js/test/production/jsfiddle/geojson.html b/mapea-js/test/production/jsfiddle/geojson.html new file mode 100644 index 000000000..9b2d58fcd --- /dev/null +++ b/mapea-js/test/production/jsfiddle/geojson.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/geojson.js b/mapea-js/test/production/jsfiddle/geojson.js new file mode 100644 index 000000000..8b819f48d --- /dev/null +++ b/mapea-js/test/production/jsfiddle/geojson.js @@ -0,0 +1,13 @@ +var mapajs = M.map({ + container: "map", + wmcfiles: ["mapa"] +}); + +//GeoJSON servido +mapajs.addLayers(new M.layer.GeoJSON({ name: "Provincias", url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=tematicos:Provincias&maxFeatures=50&outputFormat=application/json" })); + +//GeoJSON local +mapajs.addLayers(new M.layer.GeoJSON({ + source: { "crs": { "properties": { "name": "EPSG:4326" }, "type": "name" }, "features": [{ "properties": { "estado": 1, "vendor": { "mapea": {} }, "sede": "/Sevilla/CHGCOR003-Oficina de la zona regable del Genil", "tipo": "ADSL", "name": "/Sevilla/CHGCOR003-Oficina de la zona regable del Genil" }, "type": "Feature", "geometry": { "type": "Point", "coordinates": [-5.278075, 37.69374444444444] } }, { "properties": { "estado": 0, "vendor": { "mapea": {} }, "sede": "/Córdoba/CHGCOR014-Presa de Retortillo", "tipo": "VSAT", "name": "/Córdoba/CHGCOR014-Presa de Retortillo" }, "type": "Feature", "geometry": { "type": "Point", "coordinates": [-5.347761111111111, 37.84215833333334] } }, { "properties": { "estado": 0, "vendor": { "mapea": {} }, "sede": "/Córdoba/CHGCOR015-Presa de San Rafael de Navallana", "tipo": "3G", "name": "/Córdoba/CHGCOR015-Presa de San Rafael de Navallana" }, "type": "Feature", "geometry": { "type": "Point", "coordinates": [-4.629191666666667, 37.95544166666667] } }, { "properties": { "estado": 0, "vendor": { "mapea": {} }, "sede": "/Granada/CHGGRA008-Presa de Colomera", "tipo": "ADSL", "name": "/Granada/CHGGRA008-Presa de Colomera" }, "type": "Feature", "geometry": { "type": "Point", "coordinates": [-3.718202777777778, 37.39816111111111] } }], "type": "FeatureCollection" }, + name: 'prueba' +})); diff --git a/mapea-js/test/production/jsfiddle/grupocapa.html b/mapea-js/test/production/jsfiddle/grupocapa.html new file mode 100644 index 000000000..68bc8136e --- /dev/null +++ b/mapea-js/test/production/jsfiddle/grupocapa.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/grupocapa.js b/mapea-js/test/production/jsfiddle/grupocapa.js new file mode 100644 index 000000000..bb743fc95 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/grupocapa.js @@ -0,0 +1,45 @@ +let mapa = M.map({ + container: 'map', + controls: ['layerswitcher'], + layers: ["OSM"], + bbox: [96388, 3959795, 621889, 4299792], + zoom: 3 +}); + + +let provincias = new M.layer.GeoJSON({ + name: "Provincias", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=tematicos:Provincias&maxFeatures=50&outputFormat=application/json", + extract: true +}); + + + +let campamentos = new M.layer.GeoJSON({ + name: "Campamentos", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/sepim/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=sepim:campamentos&outputFormat=application/json&", + extract: true +}); + + +let capaWMS = new M.layer.WMS({ + url: 'https://www.ideandalucia.es/services/andalucia/wms?', + name: '05_Red_Viaria', + legend: 'Red Viaria', + transparent: true, + tiled: false +}); + + +const layerGroup1 = new M.layer.LayerGroup({ + id: 'id_grupo_1', + title: 'Grupo 1', + collapsed: true, + zIndex: 100000, + children: [provincias, campamentos, capaWMS], + order: 0 +}); + +mapa.addLayerGroup(layerGroup1); + +console.log('La agrupación ' + layerGroup1.title + ' tiene ' + layerGroup1.getChildren().length + ' capas hijas'); diff --git a/mapea-js/test/production/jsfiddle/kml.html b/mapea-js/test/production/jsfiddle/kml.html new file mode 100644 index 000000000..fb2c1d148 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/kml.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/kml.js b/mapea-js/test/production/jsfiddle/kml.js new file mode 100644 index 000000000..58e973afe --- /dev/null +++ b/mapea-js/test/production/jsfiddle/kml.js @@ -0,0 +1,34 @@ +// capa KML pasada en el constructor +/*mapajs = M.map({ + container:"map", + controls: ["layerswitcher"], + center: [548830,4077720], + zoom: 8, + layers: ["KML*capaKML*http://mapea-sigc.juntadeandalucia.es/sepim_server/api/datos/kml/1194/item/469*true"] + }); +*/ + +mapajs = M.map({ + container: "map", + controls: ["layerswitcher", "mouse"], + center: [320000, 4170000], + zoom: 2, + wmcfile: ["mapa"], + layers: ["KML*Arboleda*http://mapea4-sigc.juntadeandalucia.es/files/kml/arbda_sing_se.kml*true"] +}); + +function addKML() { + //añadir la capa mediante objeto + mapajs.addKML(new M.layer.KML({ + url: "http://mapea-sigc.juntadeandalucia.es/sepim_server/api/datos/kml/1193/item/341", + name: "capaKML", + extract: true + })); + //añadir la capa mediante cadena + //mapajs.addKML("KML*capaKML*http://mapea-sigc.juntadeandalucia.es/sepim_server/api/datos/kml/1194/item/469*true"); +} + +function removeKML() { + capasKML = mapajs.removeKML({ name: "capaKML" }); + +} diff --git a/mapea-js/test/production/jsfiddle/mapacalor.html b/mapea-js/test/production/jsfiddle/mapacalor.html new file mode 100644 index 000000000..f5bd30a50 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/mapacalor.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/mapacalor.js b/mapea-js/test/production/jsfiddle/mapacalor.js new file mode 100644 index 000000000..f98c84f96 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/mapacalor.js @@ -0,0 +1,18 @@ + var map = M.map({ + container: 'map', + controls: ["layerswitcher"] + }); + + + let aguas_subterraneas = new M.layer.WFS({ + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/tematicos/ows?", + name: "tematicos", + legend: 'Aguas provincias_pob', + geometry: 'POINT' + }, { + getFeatureOutputFormat: 'geojson', + describeFeatureTypeOutputFormat: 'geojson' + }); + map.addLayers(aguas_subterraneas); + let style = new M.style.Heatmap('Cota_msnm'); + aguas_subterraneas.setStyle(style); diff --git a/mapea-js/test/production/jsfiddle/mapbox.html b/mapea-js/test/production/jsfiddle/mapbox.html new file mode 100644 index 000000000..624863c14 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/mapbox.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/mapbox.js b/mapea-js/test/production/jsfiddle/mapbox.js new file mode 100644 index 000000000..87a519de3 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/mapbox.js @@ -0,0 +1,12 @@ +var mapajs = M.map({ + container: "map", + layers: [new M.layer.Mapbox({ + type: "Mapbox", + url: "https://api.mapbox.com/v4/", + name: "mapbox.satellite", + legend: "Calles" + })], + bbox: [96388, 3959795, 621889, 4299792], + controls: ["layerswitcher", "mouse"], + zoom: 3 +}); diff --git a/mapea-js/test/production/jsfiddle/opciones.html b/mapea-js/test/production/jsfiddle/opciones.html new file mode 100644 index 000000000..5d5eb0ff4 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/opciones.html @@ -0,0 +1,37 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + + + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/opciones.js b/mapea-js/test/production/jsfiddle/opciones.js new file mode 100644 index 000000000..0bebad1d2 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/opciones.js @@ -0,0 +1,43 @@ +var mapajs = M.map({ + container: "map", + layers: ["WMS*MTA*http://www.ideandalucia.es/wms/mta400r_2008?*MTA400*true"], + controls: ["mouse", "layerswitcher"] +}); + +/** Zoom **/ +function hacerZoom() { + mapajs.setZoom(6); +} + +/** Bbox **/ +function setCobertura() { + mapajs.setBbox([323020, 4126873, 374759, 4152013]); +} + +/** MaxExtent **/ +function setMaxCobertura() { + mapajs.setMaxExtent([323020, 4126873, 374759, 4152013]); +} + +/** Projection **/ +function setProyeccion() { + mapajs.setProjection("EPSG:4326*d"); +} + +/** Center **/ +function setCentro() { + //modo objeto + mapajs.setCenter({ + x: 211000, + y: 4040000, + draw: true + }); + //modo cadena + //mapajs.setCenter("211000,4040000*true"); +} + +/** Etiqueta **/ +function addEtiqueta() { + mapajs.addLabel("texto con html", [211000, 4040000]); + //mapajs.addLabel("texto con html"); //se añade en el centro establecido +} diff --git a/mapea-js/test/production/jsfiddle/paneles.html b/mapea-js/test/production/jsfiddle/paneles.html new file mode 100644 index 000000000..27f620f6d --- /dev/null +++ b/mapea-js/test/production/jsfiddle/paneles.html @@ -0,0 +1,37 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/paneles.js b/mapea-js/test/production/jsfiddle/paneles.js new file mode 100644 index 000000000..41ebc2dd6 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/paneles.js @@ -0,0 +1,30 @@ +var mapajs = M.map({ + container: "map", + wmcfiles: ["mapa"], + layers: ["WFST*capa wfs*http://clientes.guadaltel.es/desarrollo/geossigc/wfs?*callejero:prueba_pol_wfst*MPOLYGON"] +}); + +/***crear un panel nuevo ***/ +var panelToolsExtra = new M.ui.Panel('toolsExtra', { + "collapsible": true, + "className": 'm-tools', + //"collapsedButtonClass": 'g-cartografia-herramienta', + "position": M.ui.position.TR +}); +var newControl = new M.control.Location(); +panelToolsExtra.addControls(newControl); +mapajs.addPanels(panelToolsExtra); + + +/***añadir control a un panel existente**/ +//por defecto, el plugin WFST crea un panel (edit) para añadir sus controles +mapajs.addPlugin(new M.plugin.WFSTControls(["drawfeature"])); +var newControl = new M.control.Location(); +//obtenemos el panel existente y le insertamos en nuevo control +mapajs.getPanels('edit')[0].addControls([newControl]); + +// funcion para abrir el panel y cambiarle el color +function abrirPanel() { + panelToolsExtra.getTemplatePanel().style.backgroundColor = "red"; + panelToolsExtra.open(); +} diff --git a/mapea-js/test/production/jsfiddle/proporcional.html b/mapea-js/test/production/jsfiddle/proporcional.html new file mode 100644 index 000000000..1e72aa3cb --- /dev/null +++ b/mapea-js/test/production/jsfiddle/proporcional.html @@ -0,0 +1,49 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + + + + + +
+ Símbolo +
+ + + + + +
+ + +
+ +
+ + + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/proporcional.js b/mapea-js/test/production/jsfiddle/proporcional.js new file mode 100644 index 000000000..7eefb6f98 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/proporcional.js @@ -0,0 +1,67 @@ +let mapajs = M.map({ + container: "map", + controls: ['layerswitcher', 'overviewmap'], + wmcfiles: ["mapa"] +}); + +let indicadoresMun = new M.layer.WFS({ + legend: "Municipios Indicadores", + url: "http://geostematicos-sigc.juntadeandalucia.es/geoserver/wfs?", + namespace: "tematicos", + name: "ind_mun_simp", + geometry: 'POLYGON', +}); + +mapajs.addLayers(indicadoresMun); + +function aplicar() { + + let sizeMin = document.getElementById('min').value; + let sizeMax = document.getElementById('max').value; + + let proportionalVector = new M.style.Proportional('tot_ibi', sizeMin, sizeMax, new M.style.Point({ + fill: { + color: document.getElementById('relleno').value + }, + stroke: { + color: document.getElementById('borde').value, + width: 2 + } + })); + + //M.style.Proportional.SCALE_PROPORTION = 20; + let proportionalIcon = new M.style.Proportional('tot_ibi', sizeMin, sizeMax, new M.style.Point({ + icon: { + src: 'https://cdn0.iconfinder.com/data/icons/citycons/150/Citycons_building-128.png', + opacity: 0.8, + anchor: [0.5, 0.5], + rotate: false, + snaptopixel: true, + } + })); + + let proportionalSymbol = new M.style.Proportional('tot_ibi', sizeMin, sizeMax, new M.style.Point({ + icon: { + form: M.style.form.LOZENGE, + gradient: true, + fontsize: 0.8, + radius: 20, + color: 'blue', + fill: '#8A0829', + gradientcolor: '#088A85' + } + })); + + switch (document.querySelector('input[name="tipo"]:checked').value) { + case 'simple': + indicadoresMun.setStyle(proportionalVector); + break; + case 'icono': + indicadoresMun.setStyle(proportionalIcon); + break; + case 'symbol': + indicadoresMun.setStyle(proportionalSymbol); + break; + } + +} diff --git a/mapea-js/test/production/jsfiddle/proyecciones.html b/mapea-js/test/production/jsfiddle/proyecciones.html new file mode 100644 index 000000000..5840c5e5c --- /dev/null +++ b/mapea-js/test/production/jsfiddle/proyecciones.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/proyecciones.js b/mapea-js/test/production/jsfiddle/proyecciones.js new file mode 100644 index 000000000..785cd7ae7 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/proyecciones.js @@ -0,0 +1,51 @@ + // Definimos proyeccion 32630 + const proj32630 = { + def: '+proj=utm +zone=30 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"', + extent: [166021.4431, 0.0000, 833978.5569, 9329005.1825], + codes: ['EPSG:32630', 'urn:ogc:def:crs:EPSG::32630', 'http://www.opengis.net/gml/srs/epsg.xml#32630'], + units: 'm', + }; + + M.projection.addProjections(proj32630); + + + // Reproyeccion vector con coordenadas en 32630 + var mapajs = M.map({ + container: 'map', + wmcfiles: ['mapa'], + controls: ['mouse'] + }); + + mapajs.addLayers(new M.layer.GeoJSON({ + source: { + "crs": { + "properties": { + "name": "EPSG:32630" + }, + "type": "name" + }, + "features": [{ + "properties": { + "estado": 1, + "name": "Punto 1" + }, + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [223659, 4149922] + } + }, { + "properties": { + "estado": 0, + "name": "Punto 2" + }, + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [270705, 4136592] + } + }], + "type": "FeatureCollection" + }, + name: 'prueba' + })); diff --git a/mapea-js/test/production/jsfiddle/utilidades.html b/mapea-js/test/production/jsfiddle/utilidades.html new file mode 100644 index 000000000..e3dc915af --- /dev/null +++ b/mapea-js/test/production/jsfiddle/utilidades.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/utilidades.js b/mapea-js/test/production/jsfiddle/utilidades.js new file mode 100644 index 000000000..b2a7af812 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/utilidades.js @@ -0,0 +1,33 @@ +//Creamos el mapa +var mapajs = M.map({ + container: "map" +}); + + +mapajs.getMapImpl().on('click', function(e) { + + //Hacemos una peticón get con M.remote + M.remote.get("http://ovc.catastro.meh.es/ovcservweb/OVCSWLocalizacionRC/OVCCoordenadas.asmx/Consulta_RCCOOR", { + 'SRS': mapajs.getProjection().code, + 'Coordenada_X': e.coordinate[0], + 'Coordenada_Y': e.coordinate[1] + }).then(function(res) { + console.log(res.text); + }); + + // Una peticion con POST + let url = 'http://www.ieca.junta-andalucia.es/geoserver-ieca/topp/wfs?'; + let request = '' + + '' + + '' + + ''; + + M.remote.post(url, request).then(res => console.log(JSON.parse(res.text))); +}); diff --git a/mapea-js/test/production/jsfiddle/wfs.html b/mapea-js/test/production/jsfiddle/wfs.html new file mode 100644 index 000000000..8fb5dc314 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/wfs.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/wfs.js b/mapea-js/test/production/jsfiddle/wfs.js new file mode 100644 index 000000000..a9f550d19 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/wfs.js @@ -0,0 +1,34 @@ +// En el constructor +var mapajs = M.map({ + container: "map", + controls: ["layerswitcher", "mouse"], + wmcfiles: ["cdau"], + center: [506039, 4134271], + zoom: 8 +}); + +// Capa WFS de Aguas Sup. +lAguasSupRediam = new M.layer.WFS({ + url: 'http://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_WFS_RN_Aguas?bbox=508887.12101065,4131323.42844933,509462.159552335,4131744.12235486', + legend: 'Cursos de Agua Rediam', + name: 'a_red_hidrografica', + geometry: 'MLINE' +}, { + getFeatureOutputFormat: 'geojson', + describeFeatureTypeOutputFormat: 'geojson' +}); +//lAguasSupRediam.options.getFeatureOutputFormat = 'geojson'; +mapajs.addLayers(lAguasSupRediam); + +// Capa WFS de Unidades Litologicas +var lSuelo = new M.layer.WFS({ + url: 'http://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_WFS_RN_Geodiversidad?bbox=508887.12101065,4131323.42844933,509462.159552335,4131744.12235486', + legend: 'Unidades litológicas', + name: 'unidades_litologicas_medio_terrestre', + geometry: 'MPOLYGON' +}, { + getFeatureOutputFormat: 'geojson', + describeFeatureTypeOutputFormat: 'geojson' +}); +//lSuelo.options.getFeatureOutputFormat = 'geojson'; +mapajs.addWFS(lSuelo); diff --git a/mapea-js/test/production/jsfiddle/wmc.html b/mapea-js/test/production/jsfiddle/wmc.html new file mode 100644 index 000000000..54f31f4c8 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/wmc.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/wmc.js b/mapea-js/test/production/jsfiddle/wmc.js new file mode 100644 index 000000000..9c88291ce --- /dev/null +++ b/mapea-js/test/production/jsfiddle/wmc.js @@ -0,0 +1,13 @@ +// En constructor +mapajs = M.map({ + container: 'map', + controls: ["layerswitcher"], + wmcfiles: ['http://www.callejerodeandalucia.es/wmc/context_cdau_callejero.xml*Mapa'] +}); + +// En el mapa +var miWmc = new M.layer.WMC({ + url: 'http://www.callejerodeandalucia.es/wmc/context_cdau_satelite.xml', + name: 'Satélite' +}); +mapajs.addWMC(miWmc); diff --git a/mapea-js/test/production/jsfiddle/wms.html b/mapea-js/test/production/jsfiddle/wms.html new file mode 100644 index 000000000..b8a4495bb --- /dev/null +++ b/mapea-js/test/production/jsfiddle/wms.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/wms.js b/mapea-js/test/production/jsfiddle/wms.js new file mode 100644 index 000000000..11fdbba94 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/wms.js @@ -0,0 +1,22 @@ + // OPCION 1: En el constructor del mapa, en modo cadena u objeto + mapajs = M.map({ + container: "map", + layers: ["WMS*Municipios*http://www.ideandalucia.es/wms/dea100_divisiones_administrativas?*terminos_municipales*false*true", + new M.layer.WMS({ + url: 'http://www.callejerodeandalucia.es/servicios/base/wms?', + name: 'batimetria', + legend: 'Batimetria', + transparent: true, + tiled: false + }) + ] + }); + + // OPCION 2: Con el metodo addLayers + mapajs.addWMS(new M.layer.WMS({ + url: 'http://www.callejerodeandalucia.es/servicios/base/wms?', + name: 'CDAU_toponimia', + legend: 'Toponimia', + transparent: true, + tiled: false + })); diff --git a/mapea-js/test/production/jsfiddle/wmts copy.html b/mapea-js/test/production/jsfiddle/wmts copy.html new file mode 100644 index 000000000..8cf40484e --- /dev/null +++ b/mapea-js/test/production/jsfiddle/wmts copy.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/wmts copy.js b/mapea-js/test/production/jsfiddle/wmts copy.js new file mode 100644 index 000000000..ec1e7e207 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/wmts copy.js @@ -0,0 +1,18 @@ + // OPCION 1: En el constructor del mapa, en modo cadena u objeto + mapajs = M.map({ + container: "map", + layers: ["WMTS*https://www.ign.es/wmts/pnoa-ma?*OI.OrthoimageCoverage*EPSG:25830*PNOA"], + center: [363063, 4150610], + zoom: '4', + controls: ['layerswitcher'] + }); + + // OPCION 2: Con el metodo addLayers + /*var layer = new M.layer.WMTS({ + url: "https://www.ideandalucia.es/geowebcache/service/wmts", + name: "toporaster", + matrixSet: "EPSG:25830", + legend: "Toporaster" + }); + + mapajs.addWMTS(layer);*/ diff --git a/mapea-js/test/production/jsfiddle/wmts.html b/mapea-js/test/production/jsfiddle/wmts.html new file mode 100644 index 000000000..8cf40484e --- /dev/null +++ b/mapea-js/test/production/jsfiddle/wmts.html @@ -0,0 +1,31 @@ + + + + + + + + + + PRUEBA DESARROLLO + + + + + +
+ + + + + + \ No newline at end of file diff --git a/mapea-js/test/production/jsfiddle/wmts.js b/mapea-js/test/production/jsfiddle/wmts.js new file mode 100644 index 000000000..ec1e7e207 --- /dev/null +++ b/mapea-js/test/production/jsfiddle/wmts.js @@ -0,0 +1,18 @@ + // OPCION 1: En el constructor del mapa, en modo cadena u objeto + mapajs = M.map({ + container: "map", + layers: ["WMTS*https://www.ign.es/wmts/pnoa-ma?*OI.OrthoimageCoverage*EPSG:25830*PNOA"], + center: [363063, 4150610], + zoom: '4', + controls: ['layerswitcher'] + }); + + // OPCION 2: Con el metodo addLayers + /*var layer = new M.layer.WMTS({ + url: "https://www.ideandalucia.es/geowebcache/service/wmts", + name: "toporaster", + matrixSet: "EPSG:25830", + legend: "Toporaster" + }); + + mapajs.addWMTS(layer);*/ diff --git a/mapea-legacy/assets/css/mapea-6.2.0.ol.min.css b/mapea-legacy/assets/css/mapea-6.2.0.ol.min.css new file mode 100644 index 000000000..c9d45dcc2 --- /dev/null +++ b/mapea-legacy/assets/css/mapea-6.2.0.ol.min.css @@ -0,0 +1 @@ +@font-face{font-family:g-cartografia;src:url(data:application/vnd.ms-fontobject;base64,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);src:url(data:application/vnd.ms-fontobject;base64,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#iefix) format("embedded-opentype"),url(data:font/ttf;base64,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) format("truetype"),url(data:application/font-woff;base64,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) format("woff"),url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxmb250IGlkPSJnLWNhcnRvZ3JhZmlhIiBob3Jpei1hZHYteD0iMTAyNCI+PGZvbnQtZmFjZSB1bml0cy1wZXItZW09IjEwMjQiIGFzY2VudD0iOTYwIiBkZXNjZW50PSItNjQiLz48Z2x5cGggaG9yaXotYWR2LXg9IjUxMiIvPjxnbHlwaCB1bmljb2RlPSLupIAiIGdseXBoLW5hbWU9ImFsZXJ0YSIgZD0iTTEwMTIuNjUxIDEyMC43NzVMNTg1Ljk4NCA4NjAuMzMxYy0xNC43NjMgMjUuNTQzLTQyLjM4MiA0Mi43OC03My45ODQgNDIuNzhzLTU5LjIyMS0xNy4yMzctNzMuOTg0LTQyLjc4TDExLjM0OSAxMjAuNzc1QTg1LjE0MyA4NS4xNDMgMCAwMTAgNzguMjIyQzAgMzEuMTE4IDM4LjIyOS03LjExMSA4NS4zMzMtNy4xMTFoODUzLjMzM2M0Ny4xMDQgMCA4NS4zMzMgMzguMjI5IDg1LjMzMyA4NS4zMzMgMCAxNS41MDItNC4xMjQgMzAuMDM3LTExLjM0OSA0Mi41NTN6TTg1LjI3NiA3OC4xMzdsNDI2Ljc4IDczOS41NTYgNDI2LjYxLTczOS40Ny04NTMuMzktLjA4NXpNNTEyIDI3Ny4zMzNjLTMxLjQwMyAwLTU2Ljg4OS0yNS40ODYtNTYuODg5LTU2Ljg4OSAwLTMxLjQzMSAyNS40NTgtNTYuODg5IDU2Ljg4OS01Ni44ODlzNTYuODg5IDI1LjQ4NiA1Ni44ODkgNTYuODg5YzAgMzEuNDAzLTI1LjQ1OCA1Ni44ODktNTYuODg5IDU2Ljg4OXptLTU2Ljg4OSAyNTZjMC0zLjI0My4yODQtNi40NTcuNzk2LTkuNTU3bDI4LjAxOC0xNjUuODg4YzIuMzA0LTEzLjQ1NCAxMy45OTUtMjMuNjY2IDI4LjA3NS0yMy42NjZzMjUuNzcxIDEwLjIxMiAyOC4wNDYgMjMuNjY2bDI4LjAxOCAxNjUuODg4Yy41NCAzLjEuODI1IDYuMzE1LjgyNSA5LjU1NyAwIDMxLjQwMy0yNS40NTggNTYuODg5LTU2Ljg4OSA1Ni44ODktMzEuNDAzIDAtNTYuODg5LTI1LjQ4Ni01Ni44ODktNTYuODg5eiIvPjxnbHlwaCB1bmljb2RlPSLupIEiIGdseXBoLW5hbWU9ImF5dWRhIiBkPSJNOTIyLjk5NCA2OTguNzE4QzkyMi45NyA3ODcuMTUyIDg1MS4xMjggODU4Ljk3IDc2Mi43MDQgODU5SDI2MS4yOTZjLTg4LjQzLS4wMzItMTYwLjI2Ni03MS44NTgtMTYwLjI5OC0xNjAuMjk0VjE5Ny4zMDRjLjAzLTg4LjQzIDcxLjg3Mi0xNjAuMjYyIDE2MC4yOTgtMTYwLjI5MnYuMDAyaDUwMS40MDZjODguNDMuMDI2IDE2MC4yNjggNzEuODU4IDE2MC4yOTYgMTYwLjI5MnY1MDEuNGwtLjAwNC4wMTJ6bS04MS45OTgtNTAyLjUzNGMtLjMwMi0yMS4xNjgtOC45ODYtNDAuMjI2LTIyLjk1Ni01NC4yMTgtMTQuMjQtMTQuMjEyLTMzLjcyNC0yMi45NTgtNTUuMzM4LTIyLjk2MkwyNjEuMjk0IDExOWMtMjEuNjE2LjAwOC00MS4wOTYgOC43NTQtNTUuMzM0IDIyLjk2Ni0xNC4yMTIgMTQuMjM2LTIyLjk1OCAzMy43MTgtMjIuOTYyIDU1LjMzNmwtLjAwNCA1MDEuNDAyYy4wMDggMjEuNjE0IDguNzU0IDQxLjA5NCAyMi45NjYgNTUuMzMyIDE0LjIzOCAxNC4yMSAzMy43MiAyMi45NTggNTUuMzM2IDIyLjk2SDc2Mi43YzIxLjYyLS4wMDIgNDEuMS04Ljc1IDU1LjMzNi0yMi45NTggMTQuMjA4LTE0LjIzNCAyMi45NTQtMzMuNzE4IDIyLjk1OC01NS4zMzJWMTk2LjE4NHpNNTEyLjAwOCA2OTkuMTkydi0xNi4wMDRoLS4wMDZ2MTYuMDA2Yy03Ni40MTYtLjAzNC0xMzguNDctNjIuMDk4LTEzOC41MDgtMTM4LjUxOC4wMS0yMi42NCAxOC4zNDYtNDAuOTg0IDQxLjAwMi00MSAyMi42NTIuMDE2IDQwLjk4OCAxOC4zNiA0MSA0MSAuMDA2IDE1LjYxIDYuMzA4IDI5LjY0OCAxNi41NzQgMzkuOTQyIDEwLjI5NCAxMC4yNjggMjQuMzI4IDE2LjU3IDM5LjkzNCAxNi41NzggMTUuNjA2LS4wMDggMjkuNjM2LTYuMzEyIDM5LjkyOC0xNi41NzggMTAuMjcyLTEwLjI5NCAxNi41NjQtMjQuMzMyIDE2LjU3NC0zOS45NDItLjEyNi03LjQ4NC0yLjE3OC0xMi43OTQtOC4yNjQtMjAuNjc0LTYuMDY2LTcuNzA0LTE2LjM2OC0xNi43ODYtMjkuOTM0LTI3LjkyNi0xMi41My0xMC4zNjYtMjYuODMtMjEuOTg2LTM4LjU3NC0zNi45NDQtMTEuNzE0LTE0Ljg1Mi0yMC44MDItMzMuOTE4LTIwLjczNi01Ni43NDJ2LTQ4LjIwOGMuMDE2LTIyLjY1IDE4LjM1Mi00MC45ODYgNDEuMDA4LTQxLjAwNCAyMi42NTIuMDIgNDAuOTg0IDE4LjM2IDQxIDQxLjAwMnY0OC4yMDhjMCAuMTc0LjAzLjk0Mi45NjYgMi43MjIgMS4zNDggMi42MjIgNC44MTYgNi44OTYgOS44NjggMTEuNjY0IDUuMDM2IDQuOCAxMS41NCAxMC4xODQgMTguNjM0IDE2LjAzIDEzLjg1NCAxMS40NTggMzAuNDggMjQuOTg2IDQ0LjA4OCA0Mi45NDQgMTMuNjE0IDE3Ljg3MiAyNC4wMjggNDAuOSAyMy45NTQgNjguOTI2LS4wMDQgMC0uMDA0LjAwOC0uMDA0LjAwOC0uMDMyIDc2LjQyMi02Mi4wOTQgMTM4LjQ3OC0xMzguNTA0IDEzOC41MXptLS4wMDYtNDA2LjIzNGMtMjYuNTUyLS4wMzYtNDguMDQtMjEuNTMtNDguMDcyLTQ4LjA3Mi4wMy0yNi41NDYgMjEuNTE4LTQ4LjAzOCA0OC4wNzItNDguMDcgMjYuNTQ2LjAzIDQ4LjAzOCAyMS41MiA0OC4wNjYgNDguMDctLjAyOCAyNi41NTItMjEuNTIgNDguMDM0LTQ4LjA2NiA0OC4wNzJ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kgiIgZ2x5cGgtbmFtZT0iYmFuZGVyYSIgZD0iTTkwNC45MjggODk4LjI3MmMtMTQuMjQgOC43MzYtMzIuMTI4IDkuMzQ0LTQ3LjAwOCAxLjYzMkM4MTkuOTY4IDg4MC4yNTYgNzgyLjYyNCA4NjQgNzEwLjUyOCA4NjRjLTc5LjMyOCAwLTExNi42NzIgMTkuNjgtMTU5Ljk2OCA0Mi40NjRDNTAyLjg4IDkzMS41NTIgNDQ4Ljg2NCA5NjAgMzQ1Ljg4OCA5NjBjLTcxLjI2NCAwLTExOC44OC0xMy42MzItMTU3LjM0NC0zMC4yNzJDMTgxLjQ3MiA5NDcuNDI0IDE2NC4yNTYgOTYwIDE0NCA5NjBjLTI2LjQ5NiAwLTQ4LTIxLjQ3Mi00OC00OFYtMTZjMC0yNi41MjggMjEuNTA0LTQ4IDQ4LTQ4czQ4IDIxLjQ3MiA0OCA0OHYzOTIuNzY4QzIzMi43NjggMzk4LjE0NCAyNzAuMzY4IDQxNiAzNDUuODg4IDQxNmM3OS4yOTYgMCAxMTYuNjcyLTE5LjY4IDE1OS45MzYtNDIuNDY0QzU1My41MDQgMzQ4LjQ0OCA2MDcuNDg4IDMyMCA3MTAuNTI4IDMyMGM5My41MzYgMCAxNDUuOTIgMjMuMDQgMTkxLjUyIDQ2LjYyNEE0Ny45ODcgNDcuOTg3IDAgMDE5MjggNDA5LjI4djQ0OGE0Ny45NjQgNDcuOTY0IDAgMDEtMjMuMDcyIDQwLjk5MnpNODMyIDQzOS4yOTZDODAxLjQwOCA0MjUuNzYgNzY2LjQzMiA0MTYgNzEwLjUyOCA0MTZjLTc5LjMyOCAwLTExNi42NzIgMTkuNjgtMTU5Ljk2OCA0Mi40NjRDNTAyLjg4IDQ4My41NTIgNDQ4Ljg2NCA1MTIgMzQ1Ljg4OCA1MTJjLTY5LjA4OCAwLTExNi0xMi43NjgtMTUzLjg4OC0yOC43MzZ2MzQxLjUwNEMyMzIuNzY4IDg0Ni4xNDQgMjcwLjM2OCA4NjQgMzQ1Ljg4OCA4NjRjNzkuMjk2IDAgMTE2LjY3Mi0xOS42OCAxNTkuOTM2LTQyLjQ2NEM1NTMuNTA0IDc5Ni40NDggNjA3LjQ4OCA3NjggNzEwLjUyOCA3NjhjNTAuNzg0IDAgODkuNDQgNi43ODQgMTIxLjQ3MiAxNi43NjhWNDM5LjI5NnoiLz48Z2x5cGggdW5pY29kZT0i7qSDIiBnbHlwaC1uYW1lPSJicnVqdWxhIiBkPSJNNTEyIDk2MEMyMjkuMjI5IDk2MCAwIDczMC43NjkgMCA0NDhTMjI5LjIzMS02NCA1MTItNjRjMjgyLjc3MSAwIDUxMiAyMjkuMjMxIDUxMiA1MTJTNzk0Ljc3MSA5NjAgNTEyIDk2MHptMC05MjcuNzQyQzI4Mi40MDcgMzIuMjU4IDk2LjI1OCAyMTguNDA3IDk2LjI1OCA0NDhjMCAyMjkuNTk1IDE4Ni4xNDkgNDE1Ljc0NCA0MTUuNzQyIDQxNS43NDQgMjI5LjU5NSAwIDQxNS43NDQtMTg2LjE0OSA0MTUuNzQ0LTQxNS43NDRTNzQxLjU5NSAzMi4yNTggNTEyIDMyLjI1OHptLTIzOC42MSAxNzcuMTdzMjcxLjEyNCA5Ny42NDcgMzI1LjM2MiAxNTEuODJjNTQuMjM3IDU0LjIzNyAxNTEuODIyIDMyNS4zNjQgMTUxLjgyMiAzMjUuMzY0UzQ3OS40NSA1ODguOTY1IDQyNS4yNDEgNTM0Ljc1OSAyNzMuMzkgMjA5LjQyOCAyNzMuMzkgMjA5LjQyOHptMTkzLjM1NSAyNjMuOTU3bDcwLjYzMy03MC42MzNjMTcuNjU4LTE3LjY2LTE1OC45MjctODguMjkxLTE1OC45MjctODguMjkxczcwLjYzNiAxNzYuNTg1IDg4LjI5MyAxNTguOTI1eiIvPjxnbHlwaCB1bmljb2RlPSLupIQiIGdseXBoLW5hbWU9ImNhbmNlbGFyIiBkPSJNNjE1LjUzNiA0NDkuNDlMODc3LjA4IDE4Ny45NDRjMjkuODI2LTI5LjgyNCAyOS44MjYtNzUuNzA4IDAtMTA1LjUzNC0xMy43NjYtMTMuNzY2LTM0LjQxMi0yMi45NDQtNTIuNzY4LTIyLjk0NC0xOC4zNTQgMC0zOS4wMDIgOS4xNzgtNTIuNzY4IDIyLjk0NEw1MTAgMzQzLjk1NiAyNDguNDU0IDgyLjQxMmMtMTMuNzY2LTEzLjc2Ni0zNC40MTQtMjIuOTQ0LTUyLjc2OC0yMi45NDRzLTM5LjAwMiA5LjE3OC01Mi43NjggMjIuOTQ0Yy0yOS44MjYgMjkuODI0LTI5LjgyNiA3NS43MDggMCAxMDUuNTM0bDI2MS41NDYgMjYxLjU0Ni0yNjEuNTQ2IDI2MS41NDRjLTI5LjgyNiAyOS44MjYtMjkuODI2IDc1LjcxIDAgMTA1LjUzNnM3NS43MSAyOS44MjYgMTA1LjUzNiAwTDUxMCA1NTUuMDI4bDI2MS41NDQgMjYxLjU0NGMyOS44MjYgMjkuODI2IDc1LjcxIDI5LjgyNiAxMDUuNTM2IDBzMjkuODI2LTc1LjcxIDAtMTA1LjUzNkw2MTUuNTM2IDQ0OS40OXoiLz48Z2x5cGggdW5pY29kZT0i7qSFIiBnbHlwaC1uYW1lPSJjYW5jZWxhcjIiIGQ9Ik03MDMuNTg0IDU5My45MmMtLjQ4IDExLjYxNi00LjggMjMuMTM2LTEzLjY5NiAzMi04Ljg2NCA4Ljg2NC0yMC4zODQgMTMuMjE2LTMyIDEzLjY5Ni0xMi45MjguNTQ0LTI2LjAxNi0zLjgwOC0zNS44NzItMTMuNjk2TDUxMiA1MTUuODcyIDQwMS45ODQgNjI1LjkyYy05Ljg4OCA5Ljg4OC0yMi45NDQgMTQuMjA4LTM1Ljg3MiAxMy42OTYtMTEuNjE2LS40OC0yMy4xMzYtNC44LTMyLTEzLjY5Ni04Ljg2NC04Ljg2NC0xMy4yMTYtMjAuMzg0LTEzLjY5Ni0zMi0uNTQ0LTEyLjkyOCAzLjgwOC0yNS45ODQgMTMuNjk2LTM1Ljg3Mkw0NDQuMTI4IDQ0OCAzMzQuMTEyIDMzNy45ODRjLTkuODg4LTkuODg4LTE0LjIwOC0yMi45NDQtMTMuNjk2LTM1Ljg3Mi40OC0xMS42MTYgNC44LTIzLjEzNiAxMy42OTYtMzIgOC44NjQtOC44NjQgMjAuMzg0LTEzLjIxNiAzMi0xMy42OTYgMTIuOTI4LS41NDQgMjUuOTg0IDMuODA4IDM1Ljg3MiAxMy42OTZMNTEyIDM4MC4xMjggNjIyLjA0OCAyNzAuMDhjOS44ODgtOS44ODggMjIuOTQ0LTE0LjIwOCAzNS44NzItMTMuNjk2IDExLjYxNi40OCAyMy4xMzYgNC44IDMyIDEzLjY5NiA4Ljg2NCA4Ljg2NCAxMy4yMTYgMjAuMzg0IDEzLjY5NiAzMiAuNTQ0IDEyLjkyOC0zLjgwOCAyNS45ODQtMTMuNjk2IDM1Ljg3Mkw1NzkuODcyIDQ0OGwxMTAuMDE2IDExMC4wMTZjOS44ODggOS44ODggMTQuMjQgMjIuOTQ0IDEzLjY5NiAzNS45MDR6TTUxMiA5NjBDMjI5LjI0OCA5NjAgMCA3MzAuNzUyIDAgNDQ4UzIyOS4yNDgtNjQgNTEyLTY0czUxMiAyMjkuMjQ4IDUxMiA1MTItMjI5LjI0OCA1MTItNTEyIDUxMnptMC05MjhDMjgyLjYyNCAzMiA5NiAyMTguNjI0IDk2IDQ0OHMxODYuNjI0IDQxNiA0MTYgNDE2IDQxNi0xODYuNjI0IDQxNi00MTZTNzQxLjM3NiAzMiA1MTIgMzJ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6khiIgZ2x5cGgtbmFtZT0iY2FwYXMiIGQ9Ik05NjAgOTYwSDMyMGMtMzUuMzI4IDAtNjQtMjguNjQtNjQtNjRWNzA0SDY0Yy0zNS4zMjggMC02NC0yOC42NC02NC02NFYwYzAtMzUuMzI4IDI4LjY3Mi02NCA2NC02NGg2NDBjMzUuMzYgMCA2NCAyOC42NzIgNjQgNjR2MTkyaDE5MmMzNS4zMjggMCA2NCAyOC42NzIgNjQgNjR2NjQwYzAgMzUuMzYtMjguNjcyIDY0LTY0IDY0ek02NzIgMzJIOTZ2NTc2aDE2MFYyNTZjMC0zNS4zNiAyOC42NzItNjQgNjQtNjRoMzUyVjMyem0yNTYgMjU2SDM1MnY1NzZoNTc2VjI4OHoiLz48Z2x5cGggdW5pY29kZT0i7qSHIiBnbHlwaC1uYW1lPSJjYXBhczIiIGQ9Ik03OC4yNDYgNjQ4LjAzOEw0OTguNzA4IDQyMy4yMWM0LjE1LTIuMjIgOC43Mi0zLjMyOCAxMy4yOS0zLjMyOHM5LjE0IDEuMTA4IDEzLjI5MiAzLjMyOGw0MjAuNDYyIDIyNC44MjhhMjguMTkxIDI4LjE5MSAwIDAxMCA0OS43MThMNTI1LjI4OCA5MjIuNTg0YTI4LjE2NyAyOC4xNjcgMCAwMS0yNi41ODIgMEw3OC4yNDYgNjk3Ljc1NmEyOC4xOTQgMjguMTk0IDAgMDEtMTQuODk4LTI0Ljg2IDI4LjE5MyAyOC4xOTMgMCAwMTE0Ljg5OC0yNC44NTh6TTUxMS45OTggODQ5Ljc2bDM0MC42ODYtMTc2Ljg2NC0zNDAuNjg2LTE3MC44NjItMzQwLjY4NiAxNzAuODYyTDUxMS45OTggODQ5Ljc2em00MzMuNzU0LTM3Ni45NzJsLTEyMi41NzIgNjUuNTRjLTEzLjcyOCA3LjM0NC00MS41MDQgMy4wNjQtNDguODQ2LTEwLjY2Mi03LjM0LTEzLjczLTUuNDYyLTM3LjcxIDguMjY4LTQ1LjA1bDYyLjA4Mi0zNC42ODRMNTExLjk5OCAyODMuMDcgMTc5LjMxMiA0NDcuOTNsNjIuOTY2IDM1LjE1NmMxMy43MyA3LjM0MiAxMy4zOTQgMzAuMTg4IDYuMDU0IDQzLjkxNi03LjM0IDEzLjcyNC0zMi45MDggMTkuMTM4LTQ2LjYzNCAxMS43OThMNzguMjQ0IDQ3Mi43OWMtOS4xNy00LjkwNC0xNC44OTgtMTQuNDU4LTE0Ljg5OC0yNC44NThzNS43MjItMTkuOTU0IDE0Ljg5OC0yNC44NThsNDIwLjQ2Mi0yMjQuODI2YzQuMTUtMi4yMjIgOC43Mi0zLjMzMiAxMy4yOS0zLjMzMnM5LjE0IDEuMTEgMTMuMjkyIDMuMzMyTDk0NS43NSA0MjMuMDc0YTI4LjE5MSAyOC4xOTEgMCAwMTE0Ljg5OCAyNC44NTggMjguMTc3IDI4LjE3NyAwIDAxLTE0Ljg5NiAyNC44NTZ6bTAtMjI0LjgyOGwtMTE4LjY4NiA2My40NjJjLTEzLjczMiA3LjM0LTQxLjM5MiAxLjMwMi00OC43MzItMTIuNDI0LTcuMzQtMTMuNzMtNS41NzYtMzUuOTUgOC4xNTQtNDMuMjlsNTguMTk2LTMyLjYwNEw1MTEuOTk4IDU4LjI0MiAxNzkuMzEyIDIyMy4xMDRsNTcuNDE0IDMyLjE4NmMxMy43MyA3LjM0IDE1LjYxMiAyOS45ODQgOC4yNzIgNDMuNzFzLTM1LjEyNiAxOS4zNDgtNDguODUgMTIuMDAyTDc4LjI0NCAyNDcuOTU4Yy05LjE3LTQuOTA0LTE0Ljg5OC0xNC40NTgtMTQuODk4LTI0Ljg1OHM1LjcyMi0xOS45NTQgMTQuODk4LTI0Ljg1OEw0OTguNzA2LTI2LjU4NmM0LjE1LTIuMjIgOC43Mi0zLjMzIDEzLjI5LTMuMzNzOS4xNCAxLjExIDEzLjI5MiAzLjMzTDk0NS43NSAxOTguMjQyYTI4LjE5MSAyOC4xOTEgMCAwMS4wMDIgNDkuNzE4eiIvPjxnbHlwaCB1bmljb2RlPSLupIgiIGdseXBoLW5hbWU9ImNoZWNrIiBkPSJNNTEyIDk2MEMyMjkuMjQ3IDk2MCAwIDczMC43NTEgMCA0NDhTMjI5LjI0OS02NCA1MTItNjRzNTEyIDIyOS4yNDkgNTEyIDUxMi0yMjkuMjQ5IDUxMi01MTIgNTEyem0wLTkyOEMyODIuNjI0IDMyIDk2IDIxOC42MjQgOTYgNDQ4czE4Ni42MjQgNDE2IDQxNiA0MTYgNDE2LTE4Ni42MjQgNDE2LTQxNlM3NDEuMzc2IDMyIDUxMiAzMnptMjA5LjkyIDU3NS42MTVjLTEyLjg5Ni41NDUtMjUuOTg1LTMuODA3LTM1Ljg0LTEzLjY5N0w0NjMuOTk5IDM3MS44NzIgMzM3LjkyIDQ5Ny45MmMtOS44NTcgOS44ODgtMjIuOTQ0IDE0LjIwOS0zNS44NCAxMy42OTctMTEuNjE2LS40NzktMjMuMTY5LTQuODAxLTMyLjAzMy0xMy42OTctOC44NjQtOC44NjQtMTMuMjE2LTIwLjQxNy0xMy42OTctMzIuMDMzLS41NDUtMTIuODk2IDMuODA3LTI1Ljk4NSAxMy42OTctMzUuODRsMTYwLTE2MGM5LjM3Ni05LjM3NiAyMS42NjQtMTQuMDQ3IDMzLjk1Mi0xNC4wNDdzMjQuNTc2IDQuNjcxIDMzLjk1MiAxNC4wNDdsMjU2IDI1NmM5Ljg4OCA5Ljg4OCAxNC4yMDkgMjIuOTQ0IDEzLjY5NyAzNS44NC0uNDc5IDExLjYxNi00LjgwMSAyMy4xNjktMTMuNjk3IDMyLjAzMy04Ljg5NCA4Ljg5Ny0yMC40MTQgMTMuMjQ5LTMyLjAzMSAxMy42OTV6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kiSIgZ2x5cGgtbmFtZT0iY2hlY2syIiBkPSJNNzQ5LjcxNCA4MTMuNzE0SDI3NC4yODVxLTM3LjcxNCAwLTY0LjU3MS0yNi44NTd0LTI2Ljg1Ny02NC41NzFWMjQ2Ljg1N3EwLTM3LjcxNCAyNi44NTctNjQuNTcxdDY0LjU3MS0yNi44NTdoNDc1LjQyOXEzNy43MTQgMCA2NC41NzEgMjYuODU3dDI2Ljg1NyA2NC41NzF2NDc1LjQyOXEwIDM3LjcxNC0yNi44NTcgNjQuNTcxdC02NC41NzEgMjYuODU3em0xNjQuNTcyLTkxLjQyOFYyNDYuODU3cTAtNjgtNDguMjg2LTExNi4yODZUNzQ5LjcxNCA4Mi4yODVIMjc0LjI4NXEtNjggMC0xMTYuMjg2IDQ4LjI4NnQtNDguMjg2IDExNi4yODZ2NDc1LjQyOXEwIDY4IDQ4LjI4NiAxMTYuMjg2dDExNi4yODYgNDguMjg2aDQ3NS40MjlxNjggMCAxMTYuMjg2LTQ4LjI4NnQ0OC4yODYtMTE2LjI4NnoiLz48Z2x5cGggdW5pY29kZT0i7qSKIiBnbHlwaC1uYW1lPSJjaGVjazMiIGQ9Ik03NDkuNzE0IDgxMy43MTRIMjc0LjI4NWMtMjUuMTQzIDAtNDYuNjY2LTguOTUyLTY0LjU3MS0yNi44NTdzLTI2Ljg1Ny0zOS40MjktMjYuODU3LTY0LjU3MVYyNDYuODU3YzAtMjUuMTQzIDguOTUzLTQ2LjY2NiAyNi44NTctNjQuNTcxczM5LjQyOS0yNi44NTcgNjQuNTcxLTI2Ljg1N2g0NzUuNDI5YzI1LjE0MyAwIDQ2LjY2NyA4Ljk1MyA2NC41NzEgMjYuODU3czI2Ljg1NyAzOS40MjkgMjYuODU3IDY0LjU3MXY0NzUuNDI5YzAgMjUuMTQzLTguOTUyIDQ2LjY2Ny0yNi44NTcgNjQuNTcxcy0zOS40MjkgMjYuODU3LTY0LjU3MSAyNi44NTd6bTE2NC41NzItOTEuNDI4VjI0Ni44NTdjMC00NS4zMzMtMTYuMDk1LTg0LjA5NS00OC4yODYtMTE2LjI4NnMtNzAuOTUyLTQ4LjI4Ni0xMTYuMjg2LTQ4LjI4NkgyNzQuMjg1Yy00NS4zMzMgMC04NC4wOTUgMTYuMDk1LTExNi4yODYgNDguMjg2cy00OC4yODYgNzAuOTUzLTQ4LjI4NiAxMTYuMjg2djQ3NS40MjljMCA0NS4zMzQgMTYuMDk1IDg0LjA5NSA0OC4yODYgMTE2LjI4NnM3MC45NTMgNDguMjg2IDExNi4yODYgNDguMjg2aDQ3NS40MjljNDUuMzM0IDAgODQuMDk1LTE2LjA5NSAxMTYuMjg2LTQ4LjI4NnM0OC4yODYtNzAuOTUyIDQ4LjI4Ni0xMTYuMjg2em0tMTg5LjExNy02OC4yMTVjLTEyLjg1LjU0Mi0yNS44OTEtMy43OTQtMzUuNzExLTEzLjY0N0w0NjguMTc1IDQxOS4xNzMgMzQyLjU0OCA1NDQuNzY5Yy05LjgyMSA5Ljg1My0yMi44NjIgMTQuMTU3LTM1LjcxMSAxMy42NDctMTEuNTc0LS40NzgtMjMuMDg1LTQuNzgzLTMxLjkxNy0xMy42NDctOC44MzMtOC44MzMtMTMuMTY5LTIwLjM0My0xMy42NDctMzEuOTE3LS41NDItMTIuODUgMy43OTQtMjUuODkxIDEzLjY0Ny0zNS43MTFsMTU5LjQyNi0xNTkuNDI2YzkuMzQyLTkuMzQzIDIxLjU4Ni0xMy45OTggMzMuODMtMTMuOTk4czI0LjQ4OCA0LjY1NSAzMy44MyAxMy45OThsMjU1LjA4MiAyNTUuMDgyYzkuODUzIDkuODUzIDE0LjE1OSAyMi44NjIgMTMuNjQ3IDM1LjcxMS0uNDc4IDExLjU3NC00Ljc4MiAyMy4wODUtMTMuNjQ3IDMxLjkxNy04Ljg2NSA4Ljg2NC0yMC4zNDMgMTMuMjAxLTMxLjkxOCAxMy42NDd6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kiyIgZ2x5cGgtbmFtZT0iY2hlY2s0IiBkPSJNNTEyIDk2MEMyMjkuMjQ3IDk2MCAwIDczMC43NTEgMCA0NDhTMjI5LjI0OS02NCA1MTItNjRjMjgyLjc1MyAwIDUxMiAyMjkuMjQ5IDUxMiA1MTJTNzk0Ljc1MSA5NjAgNTEyIDk2MHptMC05MjhDMjgyLjYyNCAzMiA5NiAyMTguNjI0IDk2IDQ0OHMxODYuNjI0IDQxNiA0MTYgNDE2IDQxNi0xODYuNjI0IDQxNi00MTZTNzQxLjM3NiAzMiA1MTIgMzJ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kjCIgZ2x5cGgtbmFtZT0iY2hlY2s1IiBkPSJNNTEyIDk2MEMyMjkuMjQ3IDk2MCAwIDczMC43NTEgMCA0NDhTMjI5LjI0OS02NCA1MTItNjRjMjgyLjc1MyAwIDUxMiAyMjkuMjQ5IDUxMiA1MTJTNzk0Ljc1MSA5NjAgNTEyIDk2MHptMC05MjhDMjgyLjYyNCAzMiA5NiAyMTguNjI0IDk2IDQ0OHMxODYuNjI0IDQxNiA0MTYgNDE2IDQxNi0xODYuNjI0IDQxNi00MTZTNzQxLjM3NiAzMiA1MTIgMzJ6bTI1Mi45MTIgNDE1Ljk5OGMwLTEzOS42NzQtMTEzLjI0Mi0yNTIuOTQyLTI1Mi45MTQtMjUyLjk0Mi0xMzkuNjM5IDAtMjUyLjkxNCAxMTMuMjA5LTI1Mi45MTQgMjUyLjk0MiAwIDEzOS42NzIgMTEzLjI3NSAyNTIuOTQ0IDI1Mi45MTQgMjUyLjk0NCAxMzkuNjcyLjAwMiAyNTIuOTE0LTExMy4yNzMgMjUyLjkxNC0yNTIuOTQ0eiIvPjxnbHlwaCB1bmljb2RlPSLupI0iIGdseXBoLW5hbWU9ImNvbWVudGFyaW9zIiBkPSJNODI1LjgzNiA5MTEuN0gxOTguMTY0Yy05My40NDYgMC0xNjkuNDY4LTc2LjAyNi0xNjkuNDY4LTE2OS40N1YzNTUuMDgyYzAtOTMuNDQ4IDc2LjAyMi0xNjkuNDcgMTY5LjQ2OC0xNjkuNDdsMzk5Ljc5Mi0uMDAyTDc4OS4zMzItNS43N2EzMy45MDIgMzMuOTAyIDAgMDEyMy45NzYtOS45MjhjNC4zNjggMCA4Ljc3Mi44NDggMTIuOTU4IDIuNTg2YTMzLjg4NiAzMy44ODYgMCAwMTIwLjkyNiAzMS4zMDh2MTY4Ljc2YzgzLjQxIDEwLjUzNCAxNDguMTA2IDgxLjkxMiAxNDguMTA2IDE2OC4xMjh2Mzg3LjE0OGMuMDA2IDkzLjQ0NC03Ni4wMTYgMTY5LjQ2OC0xNjkuNDYyIDE2OS40Njh6bTkxLjgtNTUzLjg0MmMwLTU0LjczNC00NC41MjgtOTkuMjYyLTk5LjI2NC05OS4yNjJoLTguMTY4Yy0xOC4yNjggMC0zMy4wODYtMTQuODE4LTMzLjA4Ni0zMy4wOXYtMTE2LjY0TDYzNy4wODQgMjQ4LjkwNGEzMy4wNiAzMy4wNiAwIDAxLTIzLjM5NCA5LjY5NEgyMDUuNjI2Yy01NC43MzYgMC05OS4yNjQgNDQuNTI4LTk5LjI2NCA5OS4yNjJ2Mzc3Ljk0MmMwIDU0LjczMiA0NC41MjggOTkuMjY0IDk5LjI2NCA5OS4yNjRoNjEyLjc0NmM1NC43MzYgMCA5OS4yNjQtNDQuNTMyIDk5LjI2NC05OS4yNjRWMzU3Ljg1OHptLTE1Ni4xOCAzMjQuMDFjMjQuMzM4LS4wMDggNDQuMDU2LTE5LjcyNCA0NC4wNjQtNDQuMDY0LS4wMDgtMjQuMzM4LTE5LjcyNi00NC4wNTYtNDQuMDY0LTQ0LjA2NGgtNDk4LjkyYy0yNC4zMzQuMDA4LTQ0LjA1NiAxOS43MjYtNDQuMDY0IDQ0LjA2NC4wMDggMjQuMzQ2IDE5LjcyOCA0NC4wNTYgNDQuMDY0IDQ0LjA2NGg0OTguOTJ6bS4wMDQtMTg5LjgwNmMyNC4zMzItLjAwOCA0NC4wNS0xOS43MTYgNDQuMDU4LTQ0LjA2NC0uMDA4LTI0LjMzNC0xOS43MjItNDQuMDUtNDQuMDU4LTQ0LjA1OEgyNjIuNTRjLTI0LjMzNC4wMDgtNDQuMDU2IDE5LjcyMi00NC4wNjQgNDQuMDU4LjAwNCAyNC4zNDYgMTkuNzI4IDQ0LjA1NiA0NC4wNjQgNDQuMDY0aDQ5OC45MnoiLz48Z2x5cGggdW5pY29kZT0i7qSOIiBnbHlwaC1uYW1lPSJkZXNjYXJnYXIiIGQ9Ik05MjggMzcwYzMwIDAgNTQtMjQgNTQtNTRWMjJjMC0zMC0yNC01NC01NC01NEg5MkM2Mi0zMiAzNi04IDM2IDIydjI5NGMwIDMwIDI2IDU0IDU2IDU0czU0LTI0IDU0LTU0Vjc4aDcyOHYyMzhjMCAzMCAyNCA1NCA1NCA1NHpNNDcyIDI0OEwyNTIgNDY4Yy0yMiAyMi0yMiA1NCAwIDc2czU0IDIyIDc2IDBsMTI4LTEyNnY0NjhjMCAzMCAyNCA1NCA1NCA1NHM1NC0yNCA1NC01NFY0MThsMTI2IDEyNmMyMiAyMiA1NiAyMiA3OCAwczIyLTU0IDAtNzZMNTQ4IDI0OGMtMTAtMTAtMjQtMTYtMzgtMTZzLTI4IDYtMzggMTZ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kjyIgZ2x5cGgtbmFtZT0iZWRpdGFyIiBkPSJNMTAxMi44MzIgNjgzLjE2OEw3NDcuMTM2IDk0OC44NjRDNzM5LjY0OCA5NTYuMzUyIDcyOS44MjQgOTYwIDcyMCA5NjBzLTE5LjY0OC0zLjY0OC0yNy4xMzYtMTEuMTY4TDAgMjU2Vi02NGgzMjBsNjkyLjgzMiA2OTIuODMyYzcuNTIgNy41MiAxMS4xNjggMTcuMzQ0IDExLjE2OCAyNy4xNjggMCA5Ljg1Ni0zLjY0OCAxOS42NDgtMTEuMTY4IDI3LjE2OHpNOTYgMzJ2MTU2LjEyOEwyNTIuMTI4IDMySDk2em0yNDEuOTUyIDQ5LjkybC0xOTIgMTkyTDU5MC4wOCA3MTguMDhsMTkyLTE5MkwzMzcuOTUyIDgxLjkyem01MTIgNTEybC0xOTIgMTkyTDcyMCA4NDhsMTkyLTE5Mi02Mi4wNDgtNjIuMDh6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kkCIgZ2x5cGgtbmFtZT0iZWRpdGFyMiIgZD0iTTkxMiA0ODBjLTI2LjUyOCAwLTQ4LTIxLjUwNC00OC00OFYzMkg5NnY3NjhoNDAwYzI2LjUyOCAwIDQ4IDIxLjUwNCA0OCA0OHMtMjEuNDcyIDQ4LTQ4IDQ4SDY0Yy0zNS4zMjggMC02NC0yOC42NC02NC02NFYwYzAtMzUuMzYgMjguNjcyLTY0IDY0LTY0aDgzMmMzNS4zMjggMCA2NCAyOC42NCA2NCA2NHY0MzJjMCAyNi40OTYtMjEuNDcyIDQ4LTQ4IDQ4em0xMDAuODMyIDMzMS4xNjhMODc1LjEzNiA5NDguODY0Qzg2Ny42NDggOTU2LjM1MiA4NTcuODI0IDk2MCA4NDggOTYwcy0xOS42NDgtMy42NDgtMjcuMTM2LTExLjE2OEwyODggNDE2VjIyNGgxOTJsNTMyLjgzMiA1MzIuODMyYzcuNTIgNy41MiAxMS4xNjggMTcuMzQ0IDExLjE2OCAyNy4xNjggMCA5Ljg1Ni0zLjY0OCAxOS42NDgtMTEuMTY4IDI3LjE2OHpNNDQ4IDMyMGgtNjR2NjRsNDY0IDQ2NCA2NC02NC00NjQtNDY0eiIvPjxnbHlwaCB1bmljb2RlPSLupJEiIGdseXBoLW5hbWU9ImVzY2FsYSIgZD0iTTY0NS42OTIgNzc4LjU3OGMwIDU2LjgxNy00Ni4xNzYgMTAzLjAwNi0xMDMuMDA2IDEwMy4wMDYtNTYuNzI0IDAtMTAyLjk2Ni00Ni4xMzYtMTAyLjk2Ni0xMDMuMDA2IDAtNDUuMTkzIDI5LjQ2NC04My4xOTkgNzAuMDA4LTk3LjEyMWgtNjIuNjIydi04OC4yNmg2Mi40NzZ2LTM5LjQwMWgtNjIuNDc2di00NC4xMTdoNjIuNDc2di0zOC4zNzhoLTYyLjQ3NnYtNDQuMTk3aDYyLjQ3NnYtMzguMzEyaC02Mi40NzZ2LTQ0LjE0M2g2Mi40NzZ2LTM4LjM5MWgtNjIuNDc2di00NC4xMTdoNjIuNDc2di0zOC40NDVoLTYyLjQ3NnYtNDQuMTE3aDYyLjQ3NlYxNjQuOThjLTI3LjAzMy0xMi40ODctNDUuOTktMzkuODM5LTQ1Ljk5LTcxLjUzNSAwLTQzLjY2NSAzNS40OTUtNzkuMTIxIDc5LjA1NC03OS4xMjFzNzkuMTIxIDM1LjQwMiA3OS4xMjEgNzkuMTIxYzAgMzEuNjctMTguOTMgNTkuMDM1LTQ2LjAwMyA3MS41MzV2MTQuNTk5aDcwLjcyNXY0NC4yMWgtNzAuNzUydjM4LjQwNWg3MC43MjV2NDQuMTNoLTcwLjcyNXYzOC40MThoNzAuNzI1djQ0LjEzaC03MC43MjV2MzguMzUyaDcwLjcyNXY0NC4xNTdoLTcwLjcyNXYzOC4zNzhoNzAuNzI1djQ0LjExN2gtNzAuNzI1djM5LjQwMWg3MC43MjV2ODguMjg3aC03MC44OThjNDAuNjYzIDEzLjgyOSA3MC4xMjcgNTEuODIyIDcwLjEyNyA5Ny4wMTV6bS0xNjEuODI4IDBjMCAzMi41MDYgMjYuNDM2IDU4Ljg4OSA1OC44ODkgNTguODg5IDMyLjQ2NyAwIDU4Ljg0OS0yNi4zODIgNTguODQ5LTU4Ljg4OSAwLTMyLjQxMy0yNi4zNjktNTguODM2LTU4Ljg0OS01OC44MzYtMzIuNDQgMC01OC44ODkgMjYuNDIyLTU4Ljg4OSA1OC44MzZ6bTkzLjgtNjg0Ljk0OGMwLTE5LjMxNS0xNS42MzYtMzQuOTM3LTM0LjkxMS0zNC45MzdzLTM0LjkzNyAxNS42MjItMzQuOTM3IDM0LjkzN2MwIDE5LjI3NSAxNS42NDkgMzQuOTUxIDM0LjkzNyAzNC45NTEgMTkuMjg5LjAyNyAzNC45MTEtMTUuNjc1IDM0LjkxMS0zNC45NTF6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kkiIgZ2x5cGgtbmFtZT0iZXNjYWxhMiIgZD0iTTEwMDkuMjAyIDIyLjIxNkw2MDUuMzMzIDQyNi4wODNjOTYuNTk1IDEzMS4yMDkgODUuOTI0IDMxNy4xNTYtMzIuNzExIDQzNS44MDItMTMwLjgyNiAxMzAuODE4LTM0My42ODkgMTMwLjgxOC00NzQuNTA3IDBzLTEzMC44MTgtMzQzLjY4MSAwLTQ3NC40OTljMTE4LjY2LTExOC42NiAzMDQuNjA1LTEyOS4zMTkgNDM1LjgwOC0zMi43MzhMOTM3Ljc4Mi00OS4yMDZjMTkuNzEzLTE5LjcyNSA1MS42OTMtMTkuNzI1IDcxLjQyMSAwIDE5LjcyNyAxOS43MjkgMTkuNzI3IDUxLjcyIDAgNzEuNDIzek01MDEuMjAxIDQ1OC44MDNjLTkxLjQzOC05MS40MjMtMjQwLjIxOS05MS40MjMtMzMxLjY3IDAtOTEuNDQyIDkxLjQzNi05MS40NDIgMjQwLjIyNiAwIDMzMS42NTcgOTEuNDQ4IDkxLjQ0MiAyNDAuMjMyIDkxLjQ0MiAzMzEuNjcgMCA5MS40My05MS40MzIgOTEuNDMtMjQwLjIyMiAwLTMzMS42NTd6TTI1MC4yOSA1NTYuOTAxaDEzLjQ4MXYtMzMuNTE5aC02OC45OTh2MzMuNTE5aDE2LjAyNXYxNDMuNzkybC0yMi41NTYtMTcuNzk2LTguODIyIDM0LjczOCAzOC44MjMgMjcuNzQyaDMyLjA0N1Y1NTYuOTAxem0xMTUuMTQzLTcuNDI5YzAtMTUuMTkzLTEwLjY0LTI2LjA5Mi0yNS4yODktMjYuMDkyLTE0LjIyOCAwLTI0Ljk1MyAxMS4xMzUtMjQuOTUzIDI1LjkxNCAwIDE1LjE4NyAxMC42NCAyNi4yMjcgMjUuMzAxIDI2LjIyNyAxNC4yNjEuMDAyIDI0LjUxMi0xMC43MTUgMjQuOTQxLTI2LjA0OXptMCAxMTEuODQ1YzAtMTUuMTg3LTEwLjY0LTI2LjA5Mi0yNS4yODktMjYuMDkyLTE0LjIyOCAwLTI0Ljk1MyAxMS4xNDMtMjQuOTUzIDI1LjkxNiAwIDE1LjIwNSAxMC42NCAyNi4yMzEgMjUuMzAxIDI2LjIzMSAxNC4yNjEuMDEyIDI0LjUxMi0xMC43MDIgMjQuOTQxLTI2LjA1NXptMTI3Ljk4NC0xMDQuNDE2di0zMy41MTloLTY4Ljk5OHYzMy41MTloMTQuNjg2djE0My43OTJsLTIyLjU3NC0xNy43OTYtOC44MTYgMzQuNzM4IDM4LjgxOSAyNy43NDJoMzIuMDQ3VjU1Ni44OThoMTQuODM3eiIvPjxnbHlwaCB1bmljb2RlPSLupJMiIGdseXBoLW5hbWU9ImVzY2FsYTMiIGQ9Ik05NjEuNTA0IDY1Ni45ODJINjguNDc5Yy0yMi44ODQgMC00MS40MjMtMTguNTUxLTQxLjQyMy00MS40MTNWMjg0LjNjMC0yMi44ODQgMTguNTQtNDEuNDEzIDQxLjQyMy00MS40MTNoODkzLjAxNGMyMi44NjIgMCA0MS40MjMgMTguNTI5IDQxLjQyMyA0MS40MTNoLjAxMXYzMzEuMjY5YzAgMjIuODYyLTE4LjU1MSA0MS40MTMtNDEuNDIzIDQxLjQxM3ptLTMwLjgzOS0zMTYuODI1YzAtMTUuMTAxLTEyLjI1Ni0yNy4zNTctMjcuMzU3LTI3LjM1N0gxMjIuMzA5Yy0xNS4xMDEgMC0yNy4zNTcgMTIuMjU2LTI3LjM1NyAyNy4zNTd2MjE4Ljg2N2MwIDE1LjEwMSAxMi4yNTYgMjcuMzU3IDI3LjM1NyAyNy4zNTdoNzgwLjk5OWMxNS4xMDEgMCAyNy4zNTctMTIuMjU2IDI3LjM1Ny0yNy4zNTdWMzQwLjE1N3pNMzI2Ljk5IDUyNS44OTlIMTk2LjEyM2MtNi44ODggMC0xMi40Ni01LjU4My0xMi40Ni0xMi40NlYzODIuNTgzYzAtNi44ODggNS41ODMtMTIuNDcxIDEyLjQ2LTEyLjQ3MUgzMjYuOTljNi44NzcgMCAxMi40NzEgNS41OTQgMTIuNDcxIDEyLjQ3MXYxMzAuODU2Yy0uMDExIDYuODY2LTUuNTk0IDEyLjQ2LTEyLjQ3MSAxMi40NnptMjUwLjQzOCAwSDQ0Ni41NzJjLTYuODc3IDAtMTIuNDYtNS41ODMtMTIuNDYtMTIuNDZWMzgyLjU4M2MwLTYuODg4IDUuNTgzLTEyLjQ3MSAxMi40Ni0xMi40NzFoMTMwLjg1NmM2Ljg3NyAwIDEyLjQ2IDUuNTk0IDEyLjQ2IDEyLjQ3MXYxMzAuODU2Yy4wMTEgNi44NjYtNS41NjIgMTIuNDYtMTIuNDYgMTIuNDZ6bTI1MC40NiAwSDY5Ny4wMWMtNi44NzcgMC0xMi40Ni01LjU4My0xMi40Ni0xMi40NlYzODIuNTgzYzAtNi44ODggNS41OTQtMTIuNDcxIDEyLjQ2LTEyLjQ3MWgxMzAuODc4YzYuODY2IDAgMTIuNDcxIDUuNTk0IDEyLjQ3MSAxMi40NzF2MTMwLjg1NmMwIDYuODY2LTUuNTk0IDEyLjQ2LTEyLjQ3MSAxMi40NnoiLz48Z2x5cGggdW5pY29kZT0i7qSUIiBnbHlwaC1uYW1lPSJmbGVjaGEiIGQ9Ik0xMDA2LjcxOSAyMTQuODU2TDgyMC41MDcgNDAxLjA3MiA5ODIuMDggNTYyLjY0N2E1OC45NzUgNTguOTc1IDAgMDExNS43MDQgNTUuMjQ3IDU4Ljk3IDU4Ljk3IDAgMDEtMzguNzI0IDQyLjQyTDc3LjY5MSA5NTQuODIzYTU4Ljk2MSA1OC45NjEgMCAwMS02MC40MS0xNC4yMzYgNTguOTkgNTguOTkgMCAwMS0xNC4yMzgtNjAuNDFMMjk3LjU2Mi0xLjE5NGE1OC45ODcgNTguOTg3IDAgMDE0Mi40Mi0zOC43MjRjMTkuODc0LTQuNjkyIDQwLjc4OCAxLjI0NyA1NS4yNDcgMTUuNzA0bDE2NS44MzMgMTY1LjgzM0w3NDcuMjc4LTQ0LjU5M2MxMS41Mi0xMS41MiAyNi42MTgtMTcuMjgxIDQxLjcxNC0xNy4yODEgMTUuMDk0IDAgMzAuMTk2IDUuNzYxIDQxLjcxMiAxNy4yODFsMTc2LjAxNyAxNzYuMDE3YzIzLjAzNiAyMy4wMzggMjMuMDM2IDYwLjM5My0uMDAyIDgzLjQzMXpNNzk5Ljg1NSA2My4zNTNMNjEwLjcxOCAyNTAuNDM0Yy0xMi41ODcgMTIuNTg3LTI5LjA4NCAxOC44ODMtNDUuNTc4IDE4Ljg4M3MtMzIuOTk1LTYuMjk2LTQ1LjU3Ni0xOC44ODNsLTE1My4wOS0xNTMuMDktMjQ3Ljg0MyA3NDEuNyA3NDEuNjk1LTI0Ny44NDUtMTQ4LjQzNS0xNDguNDMzYy0yNS4xNzQtMjUuMTctMjUuMTc0LTY1Ljk4NyAwLTkxLjE2MWwxODkuMTMxLTE4Ny4wODdMNzk5Ljg1NSA2My4zNTN6Ii8+PGdseXBoIHVuaWNvZGU9Iu6klSIgZ2x5cGgtbmFtZT0iZmxlY2hhLWFiYWpvIiBkPSJNNTE2Ljk2NCAzNDkuOTU4TDE2Mi41MSA3MDQuNDE0Yy0zMC41NTYgMzAuNTU2LTczLjMzNiAzMC41NTYtMTAzLjg5MiAwLTMwLjU1NC0zMC41NTYtMzAuNTU0LTc2LjM5IDAtMTA2Ljk0OGw0MDYuNC00MDYuNDAyYzE1LjI4LTE1LjI4IDMwLjU1Ni0yMS4zOSA1MS45NDgtMjEuMzlzMzYuNjY4IDYuMTEyIDUxLjk0NiAyMS4zOWw0MDYuNCA0MDYuNDAyYzE1LjI4IDE1LjI4IDIxLjM5IDMzLjYxIDIxLjM5IDUxLjk0NiAwIDE4LjMzNC02LjExMiAzOS43MjQtMjEuMzkgNTUuMDAyLTMwLjU1NiAzMC41NTYtNzMuMzM0IDMwLjU1Ni0xMDMuODkgMEw1MTYuOTY0IDM0OS45NTh6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kliIgZ2x5cGgtbmFtZT0iZmxlY2hhLWFiYWpvMiIgZD0iTTUxMiA5NjBDMjI5LjI0OCA5NjAgMCA3MzAuNzUyIDAgNDQ4UzIyOS4yNDgtNjQgNTEyLTY0czUxMiAyMjkuMjQ4IDUxMiA1MTItMjI5LjI0OCA1MTItNTEyIDUxMnptMC05MjhDMjgyLjYyNCAzMiA5NiAyMTguNjI0IDk2IDQ0OHMxODYuNjI0IDQxNiA0MTYgNDE2IDQxNi0xODYuNjI0IDQxNi00MTZTNzQxLjM3NiAzMiA1MTIgMzJ6bTE3NiA1NDRjLTE0LjAxNiAwLTI2LjQ5Ni02LjA4LTM1LjI2NC0xNS42NDhsLS4xMjguMDk2TDUxMiA0MDcuMDQgMzcxLjM2IDU2MC40NDhsLS4xMjgtLjA5NkMzNjIuNDk2IDU2OS45MiAzNTAuMDE2IDU3NiAzMzYgNTc2Yy0yNi40OTYgMC00OC0yMS41MDQtNDgtNDggMC0xMi41MTIgNC44OTYtMjMuNzc2IDEyLjczNi0zMi4zNTJsLS4xMjgtLjA5NiAxNzYtMTkyQzQ4NS43MjggMjkzLjY2NCA0OTguNTI4IDI4OCA1MTIgMjg4czI2LjI3MiA1LjY2NCAzNS4zNiAxNS41NTJsMTc2IDE5Mi0uMTI4LjA5NkM3MzEuMTA0IDUwNC4yMjQgNzM2IDUxNS40ODggNzM2IDUyOGMwIDI2LjQ5Ni0yMS41MDQgNDgtNDggNDh6Ii8+PGdseXBoIHVuaWNvZGU9Iu6klyIgZ2x5cGgtbmFtZT0iZmxlY2hhLWFycmliYSIgZD0iTTUxNS40MzggNTQ3LjA1bDM1NC40NTYtMzU0LjQ1NmMzMC41NTYtMzAuNTU2IDczLjMzNi0zMC41NTYgMTAzLjg5MiAwIDMwLjU1NCAzMC41NTYgMzAuNTU0IDc2LjM5IDAgMTA2Ljk0OGwtNDA2LjQgNDA2LjQwMmMtMTUuMjggMTUuMjgtMzAuNTU2IDIxLjM5LTUxLjk0OCAyMS4zOXMtMzYuNjY4LTYuMTEyLTUxLjk0Ni0yMS4zOUw1Ny4wOTIgMjk5LjU0Yy0xNS4yOC0xNS4yOC0yMS4zOS0zMy42MS0yMS4zOS01MS45NDYgMC0xOC4zMzQgNi4xMTItMzkuNzI0IDIxLjM5LTU1LjAwMiAzMC41NTYtMzAuNTU2IDczLjMzNC0zMC41NTYgMTAzLjg5IDBMNTE1LjQzOCA1NDcuMDV6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kmCIgZ2x5cGgtbmFtZT0iZmxlY2hhLWFycmliYTIiIGQ9Ik03MjMuMzYgNDAwLjQ0OGwtMTc2IDE5MkM1MzguMjcyIDYwMi4zMzYgNTI1LjQ3MiA2MDggNTEyIDYwOHMtMjYuMjcyLTUuNjY0LTM1LjM5Mi0xNS41NTJsLTE3Ni0xOTIgLjEyOC0uMDk2QzI5Mi44OTYgMzkxLjc3NiAyODggMzgwLjUxMiAyODggMzY4YzAtMjYuNDk2IDIxLjUwNC00OCA0OC00OCAxNC4wMTYgMCAyNi40OTYgNi4wOCAzNS4yNjQgMTUuNjQ4bC4xMjgtLjA5Nkw1MTIgNDg4Ljk2bDE0MC42MDgtMTUzLjQwOC4xMjguMDk2QzY2MS41MDQgMzI2LjA4IDY3NC4wMTYgMzIwIDY4OCAzMjBjMjYuNDk2IDAgNDggMjEuNTA0IDQ4IDQ4IDAgMTIuNTEyLTQuODk2IDIzLjc3Ni0xMi43MzYgMzIuMzUybC4wOTYuMDk2ek01MTIgOTYwQzIyOS4yNDggOTYwIDAgNzMwLjc1MiAwIDQ0OFMyMjkuMjQ4LTY0IDUxMi02NHM1MTIgMjI5LjI0OCA1MTIgNTEyLTIyOS4yNDggNTEyLTUxMiA1MTJ6bTAtOTI4QzI4Mi42MjQgMzIgOTYgMjE4LjYyNCA5NiA0NDhzMTg2LjYyNCA0MTYgNDE2IDQxNiA0MTYtMTg2LjYyNCA0MTYtNDE2Uzc0MS4zNzYgMzIgNTEyIDMyeiIvPjxnbHlwaCB1bmljb2RlPSLupJkiIGdseXBoLW5hbWU9ImZsZWNoYS1kZXJlY2hhIiBkPSJNNjE0Ljc0NiA0NDkuMjY0TDI2MC4yOSA5NC44MDhjLTMwLjU1Ni0zMC41NTYtMzAuNTU4LTczLjMzNiAwLTEwMy44OTIgMzAuNTU2LTMwLjU1NCA3Ni4zOS0zMC41NTQgMTA2Ljk0OCAwbDQwNi40MDIgNDA2LjRjMTUuMjggMTUuMjggMjEuMzkgMzAuNTU2IDIxLjM5IDUxLjk0OHMtNi4xMTIgMzYuNjY4LTIxLjM5IDUxLjk0NmwtNDA2LjQgNDA2LjRDMzUxLjk2IDkyMi44OSAzMzMuNjMgOTI5IDMxNS4yOTQgOTI5Yy0xOC4zMzQgMC0zOS43MjQtNi4xMTItNTUuMDAyLTIxLjM5LTMwLjU1Ni0zMC41NTYtMzAuNTU2LTczLjMzNCAwLTEwMy44OWwzNTQuNDU0LTM1NC40NTZ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kmiIgZ2x5cGgtbmFtZT0iZmxlY2hhLWRlcmVjaGEyIiBkPSJNNDY0LjQ0OCA2NTkuMzZsLS4wOTYtLjEyOEM0NTUuNzc2IDY2Ny4xMDQgNDQ0LjUxMiA2NzIgNDMyIDY3MmMtMjYuNDk2IDAtNDgtMjEuNTA0LTQ4LTQ4IDAtMTQuMDE2IDYuMDgtMjYuNDk2IDE1LjY0OC0zNS4yNjRsLS4wOTYtLjEyOEw1NTIuOTYgNDQ4IDM5OS41NTIgMzA3LjM2bC4wOTYtLjEyOEMzOTAuMDggMjk4LjQ5NiAzODQgMjg2LjAxNiAzODQgMjcyYzAtMjYuNDk2IDIxLjUwNC00OCA0OC00OCAxMi41MTIgMCAyMy43NzYgNC44OTYgMzIuMzUyIDEyLjczNmwuMDk2LS4xMjggMTkyIDE3NkM2NjYuMzM2IDQyMS43MjggNjcyIDQzNC41MjggNjcyIDQ0OHMtNS42NjQgMjYuMjcyLTE1LjU1MiAzNS4zOTJsLTE5MiAxNzUuOTY4ek01MTIgOTYwQzIyOS4yNDggOTYwIDAgNzMwLjc1MiAwIDQ0OFMyMjkuMjQ4LTY0IDUxMi02NHM1MTIgMjI5LjI0OCA1MTIgNTEyLTIyOS4yNDggNTEyLTUxMiA1MTJ6bTAtOTI4QzI4Mi42MjQgMzIgOTYgMjE4LjYyNCA5NiA0NDhzMTg2LjYyNCA0MTYgNDE2IDQxNiA0MTYtMTg2LjYyNCA0MTYtNDE2Uzc0MS4zNzYgMzIgNTEyIDMyeiIvPjxnbHlwaCB1bmljb2RlPSLupJsiIGdseXBoLW5hbWU9ImZsZWNoYS1kZXJlY2hhMyIgZD0iTTI1Ni4wNTkgNC42NjJjMjQ0LjgzLTE0MS4zNTMgNTU3LjkxLTU3LjQ0OSA2OTkuMjU0IDE4Ny4zNjggMTQxLjM4MiAyNDQuODU5IDU3LjQ4OCA1NTcuOTYyLTE4Ny4zNTUgNjk5LjMwMy0yNDQuODI2IDE0MS4zNi01NTcuODkxIDU3LjQ2NS02OTkuMjc2LTE4Ny4zNThDLTcyLjY5NCA0NTkuMTI5IDExLjIxNyAxNDYuMDM5IDI1Ni4wNiA0LjY2M3ptLTk4LjcxMyA2NDguMWMxMTMuMDg1IDE5NS44ODEgMzYzLjU2MiAyNjIuOTk0IDU1OS40MiAxNDkuOTEyQzkxMi42NDMgNjg5LjU5MiA5NzkuNzYgNDM5LjEwNiA4NjYuNjU1IDI0My4yNDggNzUzLjU3NiA0Ny4zNTEgNTAzLjExMy0xOS43MTYgMzA3LjI0MiA5My4zNjkgMTExLjM3OCAyMDYuNDU0IDQ0LjI1OCA0NTYuODg5IDE1Ny4zNDcgNjUyLjc2M3pNMjgxLjY1MyA0NDguMDF2LS4wMjljMC0yOC4yMzUgMjIuOTE0LTUxLjE5MiA1MS4xNzktNTEuMTkyaDIxMy41NTZsLTU3LjQwMy01Ny4zODdjLTE5Ljk2Ny0xOS45NjctMTkuOTY3LTUyLjM5NSAwLTcyLjM4NSAxOS45ODMtMTkuOTggNTIuNDIxLTE5Ljk4IDcyLjQwNSAwbDE0NC43NyAxNDQuNzdjMTkuOTgzIDIwLjAwMyAxOS45ODMgNTIuNDM0IDAgNzIuNDI0TDU2MS4zOSA2MjguOTc1Yy0xOS45ODMgMTkuOTk2LTUyLjQyMSAxOS45OTYtNzIuNDA1IDAtMTkuOTY3LTE5Ljk1Ny0xOS45NjctNTIuMzg5IDAtNzIuMzcybDU3LjM4LTU3LjM5N0gzMzIuODM5Yy0yOC4yNjguMDAzLTUxLjE4Mi0yMi45MDEtNTEuMTg2LTUxLjE5NXoiLz48Z2x5cGggdW5pY29kZT0i7qScIiBnbHlwaC1uYW1lPSJmbGVjaGEtZGVzaGFjZXIiIGQ9Ik0wIDg3OS45OTl2LTI1NkMwIDU5Ny41MDQgMjEuNTA0IDU3NiA0Ny45OTkgNTc2aDI1NkMzMzAuNDk2IDU3NiAzNTIgNTk3LjUwNCAzNTIgNjI0LjAwMXMtMjEuNTA0IDQ4LjAwMS00OC4wMDEgNDguMDAxSDE2MS42M0MyMzcuNzYgNzkxLjI2MyAzNjguNDQ3IDg2NCA1MTIgODY0YzIyOS4zNzYgMCA0MTYtMTg2LjYyNCA0MTYtNDE2Uzc0MS4zNzYgMzIgNTEyIDMyYy0xNjkuMDg5IDAtMzIwLjA5NiAxMDAuOTkzLTM4NC42NzIgMjU3LjMxMy01LjA4NyAxMi4yMjUtMTQuNjU1IDIxLjMxMS0yNS45ODUgMjYuMDE2cy0yNC40NDkgNS4wODctMzYuNjcxLjAzM2E0Ny45MzQgNDcuOTM0IDAgMDEtMjYuMDQ5LTI2LjAxNmMtNC43MDQtMTEuMjk3LTUuMDg3LTI0LjQxNi0uMDMzLTM2LjY3MUMxMTguMDc3IDYwLjMyMSAzMDMuOTAyLTYzLjk5OSA1MTItNjMuOTk5YzI4Mi4zMDUgMCA1MTIgMjI5LjY5NSA1MTIgNTEycy0yMjkuNjk1IDUxMi01MTIgNTEyYy0xNjcuNDI0IDAtMzIwLjcwNS04MC4zMjEtNDE2LTIxMy42Vjg4MGMwIDI2LjQ5Ny0yMS41MDQgNDguMDAxLTQ4LjAwMSA0OC4wMDFTMCA5MDYuNDk3IDAgODgweiIvPjxnbHlwaCB1bmljb2RlPSLupJ0iIGdseXBoLW5hbWU9ImZsZWNoYS1penF1aWVyZGEiIGQ9Ik00MTcuNjU0IDQ0Ny43NEw3NzIuMTEgODAyLjE5NGMzMC41NTYgMzAuNTU2IDMwLjU1NiA3My4zMzYgMCAxMDMuODkyLTMwLjU1NiAzMC41NTQtNzYuMzkgMzAuNTU0LTEwNi45NDggMGwtNDA2LjQwMi00MDYuNGMtMTUuMjgtMTUuMjgtMjEuMzktMzAuNTU2LTIxLjM5LTUxLjk0OHM2LjExMi0zNi42NjggMjEuMzktNTEuOTQ2bDQwNi40MDItNDA2LjRjMTUuMjgtMTUuMjggMzMuNjEtMjEuMzkgNTEuOTQ2LTIxLjM5IDE4LjMzNCAwIDM5LjcyNCA2LjExMiA1NS4wMDIgMjEuMzkgMzAuNTU2IDMwLjU1NiAzMC41NTYgNzMuMzM0IDAgMTAzLjg5TDQxNy42NTQgNDQ3Ljc0eiIvPjxnbHlwaCB1bmljb2RlPSLupJ4iIGdseXBoLW5hbWU9ImZsZWNoYS1penF1aWVyZGEyIiBkPSJNNTkyIDY3MmMtMTIuNTEyIDAtMjMuNzc2LTQuODk2LTMyLjM1Mi0xMi43MzZsLS4wOTYuMTI4LTE5Mi0xNzZDMzU3LjY2NCA0NzQuMjcyIDM1MiA0NjEuNDcyIDM1MiA0NDhzNS42NjQtMjYuMjcyIDE1LjU1Mi0zNS4zOTJsMTkyLTE3NiAuMDk2LjEyOEM1NjguMjI0IDIyOC44OTYgNTc5LjQ4OCAyMjQgNTkyIDIyNGMyNi40OTYgMCA0OCAyMS41MDQgNDggNDggMCAxMy45ODQtNi4wOCAyNi40OTYtMTUuNjQ4IDM1LjI2NGwuMDk2LjEyOEw0NzEuMDQgNDQ4bDE1My40MDggMTQwLjY0LS4wOTYuMTI4QzYzMy45MiA1OTcuNTA0IDY0MCA2MDkuOTg0IDY0MCA2MjRjMCAyNi40OTYtMjEuNTA0IDQ4LTQ4IDQ4em0tODAgMjg4QzIyOS4yNDggOTYwIDAgNzMwLjc1MiAwIDQ0OFMyMjkuMjQ4LTY0IDUxMi02NHM1MTIgMjI5LjI0OCA1MTIgNTEyLTIyOS4yNDggNTEyLTUxMiA1MTJ6bTAtOTI4QzI4Mi42MjQgMzIgOTYgMjE4LjYyNCA5NiA0NDhzMTg2LjYyNCA0MTYgNDE2IDQxNiA0MTYtMTg2LjYyNCA0MTYtNDE2Uzc0MS4zNzYgMzIgNTEyIDMyeiIvPjxnbHlwaCB1bmljb2RlPSLupJ8iIGdseXBoLW5hbWU9ImZsZWNoYS1penF1aWVyZGEzIiBkPSJNOTU1LjMxOSA3MDMuOTc1Yy0xNDEuMzg1IDI0NC44MjItNDU0LjQ1MiAzMjguNzE3LTY5OS4yNzQgMTg3LjM1Ny0yNDQuODQyLTE0MS4zNC0zMjguNzM5LTQ1NC40NDUtMTg3LjM1NC02OTkuM0MyMTAuMDMxLTUyLjc4NCA1MjMuMTEzLTEzNi42OTEgNzY3LjkzOSA0LjY2NWMyNDQuODQ1IDE0MS4zNzYgMzI4Ljc1NiA0NTQuNDY1IDE4Ny4zOCA2OTkuMzF6TTcxNi43NiA5My4zNzFDNTIwLjg5LTE5LjcxNyAyNzAuNDI3IDQ3LjM1MyAxNTcuMzQ4IDI0My4yNSA0NC4yNDQgNDM5LjEwNyAxMTEuMzYgNjg5LjU5MyAzMDcuMjM2IDgwMi42NzVjMTk1Ljg1NyAxMTMuMDgxIDQ0Ni4zMzMgNDUuOTY5IDU1OS40MTgtMTQ5LjkxMUM5NzkuNzQyIDQ1Ni44OSA5MTIuNjIgMjA2LjQ1NyA3MTYuNzU5IDkzLjM3MnpNNjkxLjE2NiA0OTkuMjFINDc3LjYzN2w1Ny4zOCA1Ny4zOTNjMTkuOTY3IDE5Ljk4MyAxOS45NjcgNTIuNDE1IDAgNzIuMzcyLTE5Ljk4MyAxOS45OTYtNTIuNDIxIDE5Ljk5Ni03Mi40MDQgMGwtMTQ0Ljc3LTE0NC43NjNjLTE5Ljk4My0xOS45OS0xOS45ODMtNTIuNDIxIDAtNzIuNDI0bDE0NC43Ny0xNDQuNzdjMTkuOTgzLTE5Ljk4IDUyLjQyMS0xOS45OCA3Mi40MDQgMCAxOS45NjcgMTkuOTkgMTkuOTY3IDUyLjQxOCAwIDcyLjM4NWwtNTcuNDAzIDU3LjM4N2gyMTMuNTU1YzI4LjI2NSAwIDUxLjE3OSAyMi45NTcgNTEuMTc5IDUxLjE5MnYuMDI2Yy0uMDAzIDI4LjI5Ny0yMi45MTggNTEuMjAyLTUxLjE4MiA1MS4yMDJ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6koCIgZ2x5cGgtbmFtZT0iZmxlY2hhLWxpbmsiIGQ9Ik03NDkuNzE0IDgxMy43MTRIMjc0LjI4NWMtMjUuMTQzIDAtNDYuNjY2LTguOTUyLTY0LjU3MS0yNi44NTctMTcuOTA0LTE3LjkwNS0yNi44NTctMzkuNDI5LTI2Ljg1Ny02NC41NzFWMjQ2Ljg1N2MwLTI1LjE0MyA4Ljk1My00Ni42NjYgMjYuODU3LTY0LjU3MSAxNy45MDUtMTcuOTA0IDM5LjQyOS0yNi44NTcgNjQuNTcxLTI2Ljg1N2g0NzUuNDI5YzI1LjE0MyAwIDQ2LjY2NyA4Ljk1MyA2NC41NzEgMjYuODU3czI2Ljg1NyAzOS40MjkgMjYuODU3IDY0LjU3MXY0NzUuNDI5YzAgMjUuMTQzLTguOTUyIDQ2LjY2Ny0yNi44NTcgNjQuNTcxcy0zOS40MjkgMjYuODU3LTY0LjU3MSAyNi44NTd6bTE2NC41NzItOTEuNDI4VjI0Ni44NTdjMC00NS4zMzMtMTYuMDk1LTg0LjA5NS00OC4yODYtMTE2LjI4NnMtNzAuOTUyLTQ4LjI4Ni0xMTYuMjg2LTQ4LjI4NkgyNzQuMjg1Yy00NS4zMzMgMC04NC4wOTUgMTYuMDk2LTExNi4yODYgNDguMjg2LTMyLjE5IDMyLjE5MS00OC4yODYgNzAuOTUzLTQ4LjI4NiAxMTYuMjg2djQ3NS40MjljMCA0NS4zMzQgMTYuMDk1IDg0LjA5NSA0OC4yODYgMTE2LjI4NnM3MC45NTMgNDguMjg2IDExNi4yODYgNDguMjg2aDQ3NS40MjljNDUuMzM0IDAgODQuMDk2LTE2LjA5NSAxMTYuMjg2LTQ4LjI4NiAzMi4xOTEtMzIuMTkgNDguMjg2LTcwLjk1MiA0OC4yODYtMTE2LjI4NnptLTE1Ni43MzItMzEuMDg3VjQ4Mi4wMzNjMC0yMC45MTctMTUuMjEyLTM2LjEzMS0zNi4xMjctMzYuMTMxLTIwLjkxNyAwLTM2LjEyOSAxNS4yMTQtMzYuMTI5IDM2LjEzMWwtLjk1IDEyMC43NDUtMjIyLjQ3Ny0yMjIuNDc5Yy0xNC4yNjEtMTQuMjYxLTM3LjA3OS0xNC4yNjEtNTEuMzQxIDAtMTQuMjYzIDE0LjI2My0xNC4yNjMgMzcuMDgtLjAwMiA1MS4zNDFsMjIyLjQ3NyAyMjIuNDgxSDUxMy4yMTFjLTIwLjkxNyAwLTM3LjA3OSAxNi4xNjItMzcuMDc5IDM3LjA3OSAwIDIwLjkxNSAxNS4yMTEgMzYuMTI5IDM2LjEyOCAzNi4xMjloMjA5LjE2N2M5LjUwNyAwIDE5LjAxNC0zLjgwNCAyNS42Ny0xMC40NTggNi42NTUtNi42NTYgMTAuNDU3LTE2LjE2NCAxMC40NTctMjUuNjcxeiIvPjxnbHlwaCB1bmljb2RlPSLupKEiIGdseXBoLW5hbWU9ImZsZWNoYXMtbW92ZXIiIGQ9Ik05NzIgNDgyTDgyNiA2MjhjLTE4IDE4LTQ0IDE4LTYwIDAtMTgtMTgtMTgtNDQgMC02Mmw3MC03Mkg1NTR2Mjg4bDcwLTcwYzgtOCAyMC0xMiAzMi0xMnMyMiA0IDMwIDEyYzE4IDE4IDE4IDQ0IDAgNjJMNTQyIDkxOGMtOCA4LTIwIDE0LTMyIDE0cy0yMi02LTMwLTE0TDMzNCA3NzRjLTE4LTE4LTE4LTQ0IDAtNjJzNDYtMTggNjIgMGw3MCA3MFY0OTRIMTg0bDcwIDcyYzE4IDE4IDE4IDQ0IDAgNjJzLTQ0IDE4LTYyIDBMNDggNDgyYy04LTgtMTQtMTgtMTQtMzBzNi0yNCAxNC0zMmwxNDQtMTQ2YzgtOCAyMC0xMiAzMi0xMnMyMiA2IDMwIDE0YzE4IDE4IDE4IDQyIDAgNjBsLTcwIDcyaDI4MlYxMjZsLTcwIDcwYy0xOCAxOC00NCAxNi02MiAwLTE4LTE4LTE4LTQ2IDAtNjJMNDgwLTEwYzgtOCAxOC0xNCAzMC0xNHMyNCA2IDMyIDE0bDE0NCAxNDRjMTggMTggMTggNDYgMCA2Mi0xOCAxOC00NiAxOC02MiAwbC03MC03MHYyODJoMjgybC03MC03MmMtMTgtMTgtMTgtNDIgMC02MCA4LTggMTgtMTQgMzAtMTRzMjIgNCAzMCAxMmwxNDYgMTQ2YzggOCAxMiAyMCAxMiAzMnMtNCAyMi0xMiAzMHoiLz48Z2x5cGggdW5pY29kZT0i7qSiIiBnbHlwaC1uYW1lPSJncHMiIGQ9Ik01MTEuOTY4IDk2MEMyMjkuNjU4IDk2MCAuMDA4IDczMC4zMTcuMDA4IDQ0OC4wMDkuMDA4IDE2NS42ODYgMjI5LjY1OC02NCA1MTEuOTY4LTY0YzI4Mi4zNDQgMCA1MTIuMDI1IDIyOS42ODYgNTEyLjAyNSA1MTIuMDA5QzEwMjMuOTkzIDczMC4zMTcgNzk0LjMxIDk2MCA1MTEuOTY4IDk2MHptMC05MzMuNjkxYy0yMzIuNDg5IDAtNDIxLjY1NCAxODkuMTgtNDIxLjY1NCA0MjEuNyAwIDIzMi41MjMgMTg5LjE2NSA0MjEuNjg3IDQyMS42NTQgNDIxLjY4NyAyMzIuNTU0IDAgNDIxLjcxNi0xODkuMTYyIDQyMS43MTYtNDIxLjY4NyAwLTIzMi41MjMtMTg5LjE2Mi00MjEuNy00MjEuNzE2LTQyMS43ek02OTUuNDU2IDY2OS4xNEwyNTAuNTE4IDQzMS44MzNjLTEzLjExOC03LjAwMi0yMC4wNjYtMjEuODA0LTE3LjA4Ny0zNi4zODEgMy4wMi0xNC41NjcgMTUuMjQ4LTI1LjQ0MSAzMC4wNjgtMjYuNzA0bDE2My4xNTctMTMuODM3IDEzLjgzNy0xNjMuMTcyYzEuMjQzLTE0LjgyIDEyLjEzLTI3LjA1IDI2LjY5Mi0zMC4wNTJhMzQuMDQgMzQuMDQgMCAwMTYuNzg2LS42ODZjMTIuMTk3IDAgMjMuNjc3IDYuNjkgMjkuNjA2IDE3Ljc3M0w3NDAuODY5IDYyMy43MWM2Ljk1MSAxMy4wNTMgNC41ODggMjkuMS01Ljg2NSAzOS41NDMtMTAuNDY2IDEwLjQ2MS0yNi41MDEgMTIuODU0LTM5LjU0NiA1Ljg4OHoiLz48Z2x5cGggdW5pY29kZT0i7qSjIiBnbHlwaC1uYW1lPSJncHMyIiBkPSJNOTczLjg1NSA0OTguMTUzaC01OC44OWMtMjAuMTg5IDE4Ni40MjUtMTY3LjI2IDMzNS4wNjMtMzUyLjc5NSAzNTguMDk1djUzLjU4YzAgMjcuNzI4LTIyLjQzMiA1MC4xNy01MC4xNyA1MC4xNy0yNy42NzMgMC01MC4xMzUtMjIuNDQyLTUwLjEzNS01MC4xN3YtNTMuNThjLTE4NS41NDEtMjMuMDMyLTMzMi42MTItMTcxLjY2Ny0zNTIuNzY2LTM1OC4wOTVoLTU4Ljg5QzIyLjQ2NSA0OTguMTUzIDAgNDc1LjcxMSAwIDQ0OC4wMThjMC0yNy43MjIgMjIuNDY1LTUwLjE2NiA1MC4yMTEtNTAuMTY2aDYwLjc2QzEzNi4zMTUgMjE3LjM3OCAyODAuNDk4IDc0LjgwNyA0NjEuODY3IDUyLjI5NXYtNjYuMTE0YzAtMjcuNzI0IDIyLjQ2NS01MC4xNzIgNTAuMTM1LTUwLjE3MiAyNy43MzggMCA1MC4xNyAyMi40NDggNTAuMTcgNTAuMTcydjY2LjExNGMxODEuMzMgMjIuNTEyIDMyNS41NTYgMTY1LjA4MyAzNTAuODUxIDM0NS41NTdoNjAuODM0YzI3LjcwOSAwIDUwLjE0NSAyMi40NDQgNTAuMTQ1IDUwLjE2Ni0uMDAyIDI3LjY5My0yMi40MzYgNTAuMTM1LTUwLjE0NyA1MC4xMzV6TTUxMiAxNDguMTYxYy0xNjguNzQ5IDAtMzA2LjA4OCAxMzcuMzI5LTMwNi4wODggMzA2LjEwNiAwIDE2OC43ODQgMTM3LjMzOSAzMDYuMTAyIDMwNi4wODggMzA2LjEwMiAxNjguODA4IDAgMzA2LjEyMy0xMzcuMzIgMzA2LjEyMy0zMDYuMTAyIDAtMTY4Ljc3Ni0xMzcuMzEyLTMwNi4xMDYtMzA2LjEyMy0zMDYuMTA2em0wIDQ3NC43NTVjLTkzLjEwMiAwLTE2OC42MjQtNzUuNTAyLTE2OC42MjQtMTY4LjY0NyAwLTkzLjEyMSA3NS41MTgtMTY4LjY0OSAxNjguNjI0LTE2OC42NDkgOTMuMTggMCAxNjguNjI0IDc1LjUyNiAxNjguNjI0IDE2OC42NDkgMCA5My4xNDMtNzUuNDQgMTY4LjY0Ny0xNjguNjI0IDE2OC42NDd6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kpCIgZ2x5cGgtbmFtZT0iZ3BzMyIgZD0iTTUxMS45NjUgOTYwQzIyOS42MjcgOTYwIDAgNzMwLjMwMyAwIDQ0OFMyMjkuNjI3LTY0IDUxMS45NjUtNjQgMTAyNCAxNjUuNjk3IDEwMjQgNDQ4IDc5NC4zMDMgOTYwIDUxMS45NjUgOTYwem0wLTkzNS4yNjNDMjc4LjUzMyAyNC43MzcgODguNzAyIDIxNC42MDMgODguNzAyIDQ0OHMxODkuODMxIDQyMy4yNjMgNDIzLjI2MyA0MjMuMjYzUzkzNS4yNjMgNjgxLjM5NyA5MzUuMjYzIDQ0OGMwLTIzMy4zOTctMTg5LjkzNi00MjMuMjYzLTQyMy4yOTgtNDIzLjI2M3pNNzkxLjIzMSA0NDhjMC0xNTQuMjI1LTEyNS4wNDItMjc5LjMwMS0yNzkuMjY2LTI3OS4zMDEtMTU0LjE5IDAtMjc5LjI2NiAxMjUuMDA3LTI3OS4yNjYgMjc5LjMwMSAwIDE1NC4yMjUgMTI1LjA3NiAyNzkuMzAxIDI3OS4yNjYgMjc5LjMwMSAxNTQuMjI1IDAgMjc5LjI2Ni0xMjUuMDc2IDI3OS4yNjYtMjc5LjMwMXoiLz48Z2x5cGggdW5pY29kZT0i7qSlIiBnbHlwaC1uYW1lPSJncHM0IiBkPSJNNTEyIDk2MEMyMjkuMjQ0IDk2MCAwIDczMC43NTYgMCA0NDhTMjI5LjI0NC02NCA1MTItNjRzNTEyIDIyOS4yNDQgNTEyIDUxMi0yMjkuMjQ0IDUxMi01MTIgNTEyem00OS41NDgtOTIxLjYzM1YxNTAuNzFjMCAyNy4zNTEtMjIuMTY1IDQ5LjU0OC00OS41NDggNDkuNTQ4cy00OS41NDgtMjIuMTk4LTQ5LjU0OC00OS41NDhWMzguMzY3QzI3NC4zNjYgNjAuOTk0IDEyNC45OTQgMjEwLjM5OSAxMDIuMzY3IDM5OC40NTJIMjE0LjcxYzI3LjM4NCAwIDQ5LjU0OCAyMi4xOTggNDkuNTQ4IDQ5LjU0OHMtMjIuMTY1IDQ5LjU0OC00OS41NDggNDkuNTQ4SDEwMi4zNjdjMjIuNjI3IDE4OC4wNTMgMTcxLjk5OSAzMzcuNDU4IDM2MC4wODUgMzYwLjA4NVY3NDUuMjljMC0yNy4zNTEgMjIuMTY1LTQ5LjU0OCA0OS41NDgtNDkuNTQ4czQ5LjU0OCAyMi4xOTggNDkuNTQ4IDQ5LjU0OHYxMTIuMzQzYzE4OC4wODYtMjIuNjI3IDMzNy40NTgtMTcyLjAzMiAzNjAuMDg1LTM2MC4wODVIODA5LjI5Yy0yNy4zODQgMC00OS41NDgtMjIuMTk4LTQ5LjU0OC00OS41NDhzMjIuMTY1LTQ5LjU0OCA0OS41NDgtNDkuNTQ4aDExMi4zNDNDODk5LjAwNiAyMTAuMzk5IDc0OS42MzQgNjAuOTk0IDU2MS41NDggMzguMzY3eiIvPjxnbHlwaCB1bmljb2RlPSLupKYiIGdseXBoLW5hbWU9Imd1YXJkYXIiIGQ9Ik0xMDEwLjY2NyA2NzcuMzQ0Yy04Ljg4NyAyMS4zMjQtMTkuNTYxIDM4LjIxOC0zMi4wMTEgNTAuNjU5TDc5MS45ODkgOTE0LjY3MmMtMTIuNDM0IDEyLjQzNC0yOS4zMjggMjMuMTA1LTUwLjY2MSAzMi0yMS4zMjEgOC44ODUtNDAuODgyIDEzLjMyOS01OC42NTcgMTMuMzI5SDY0LjAwMmMtMTcuNzcyIDAtMzIuODg3LTYuMjE4LTQ1LjMzMy0xOC42NjRDNi4yMjMgOTI4Ljg5OC4wMDcgOTEzLjc4Ni4wMDcgODk2LjAwNFYtLjAwMmMwLTE3Ljc4NiA2LjIxNi0zMi44OTkgMTguNjYyLTQ1LjM0QzMxLjExNS01Ny43NzYgNDYuMjMtNjQuMDAxIDY0LjAwMi02NC4wMDFoODk2LjAwNGMxNy43ODggMCAzMi44OTkgNi4yMjUgNDUuMzQgMTguNjU5IDEyLjQzNCAxMi40NDEgMTguNjUgMjcuNTU0IDE4LjY1IDQ1LjM0djYxOC42NjljMCAxNy43ODQtNC40NDEgMzcuMzM4LTEzLjMyOSA1OC42Nzh6TTQyNi42NzMgODUzLjM0MmMwIDUuNzc3IDIuMTEzIDEwLjc2NyA2LjMzNyAxNC45OTggNC4yMTkgNC4yMTIgOS4yMjEgNi4zMjMgMTQuOTk4IDYuMzIzaDEyOC4wMDZjNS43NjMgMCAxMC43NjItMi4xMDYgMTQuOTg0LTYuMzIzIDQuMjMzLTQuMjMxIDYuMzQ0LTkuMjIxIDYuMzQ0LTE0Ljk5OFY2NDAuMDA2YzAtNS43ODYtMi4xMjUtMTAuNzgzLTYuMzQ0LTE1LjAwNy00LjIyMi00LjIxLTkuMjIxLTYuMzIzLTE0Ljk4NC02LjMyM0g0NDguMDA4Yy01Ljc3NyAwLTEwLjc4MSAyLjEwNi0xNC45OTggNi4zMjMtNC4yMjQgNC4yMzEtNi4zMzcgOS4yMjEtNi4zMzcgMTUuMDA3djIxMy4zMzZ6TTc2OC4wMTUgMjEuMzI4SDI1NnYyNTYuMDA2aDUxMi4wMTVWMjEuMzI4em0xNzAuNjc4IDBoLTg1LjM2N1YyOTguNjdjMCAxNy43ODYtNi4yMTggMzIuODg5LTE4LjY1OSA0NS4zNC0xMi40NDEgMTIuNDQxLTI3LjU1NCAxOC42NjYtNDUuMzIzIDE4LjY2NkgyMzQuNjdjLTE3Ljc3OSAwLTMyLjg5NC02LjIyNS00NS4zNC0xOC42NjYtMTIuNDM5LTEyLjQ0MS0xOC42NjItMjcuNTU0LTE4LjY2Mi00NS4zNFYyMS4zMjhIODUuMzMzdjg1My4zNDVoODUuMzMyVjU5Ny4zMzZjMC0xNy43ODEgNi4yMTYtMzIuODg3IDE4LjY2Mi00NS4zMzMgMTIuNDQ2LTEyLjQzOSAyNy41NjEtMTguNjY0IDQ1LjM0LTE4LjY2NGgzODQuMDE0YzE3Ljc3IDAgMzIuODk5IDYuMjI1IDQ1LjMyMyAxOC42NjQgMTIuNDM0IDEyLjQzOSAxOC42NjYgMjcuNTUxIDE4LjY2NiA0NS4zMzN2Mjc3LjMzN2M2LjY2NCAwIDE1LjMyNS0yLjIxOCAyNi4wMDMtNi42NjIgMTAuNjc2LTQuNDQxIDE4LjIyNy04Ljg4NSAyMi42NzEtMTMuMzI5TDkxOC42OSA2NjcuMzRjNC40NDEtNC40NDQgOC44ODctMTIuMTE5IDEzLjMyOS0yMy4wMDMgNC40NTgtMTAuODkzIDYuNjcxLTE5LjQ1MSA2LjY3MS0yNS42NzJWMjEuMzI3eiIvPjxnbHlwaCB1bmljb2RlPSLupKciIGdseXBoLW5hbWU9ImhlcnJhbWllbnRhIiBkPSJNOTkxLjk5NyA3MDIuMTUyYTU1LjM0NiA1NS4zNDYgMCAwMS00MC4yOTIgMzIuNTQ3IDU1LjE4MiA1NS4xODIgMCAwMS0xMC40NjUuOTkyIDU1LjE5IDU1LjE5IDAgMDEtMzkuMDQ0LTE2LjE2MmwtMTcwLjgtMTcwLjhhMTUuOTQgMTUuOTQgMCAwMC0xMS4yOTctNC42NzJjLTQuNDQ4IDAtOC40NDkgMS44MjQtMTEuMzI5IDQuNjcybC05Ni4wMDkgOTYuMDA5YTE1LjkzOCAxNS45MzggMCAwMC00LjY3MiAxMS4zMjljMCA0LjQ0OCAxLjc5MiA4LjQ0OSA0LjY3MiAxMS4zMjlsMTcwLjggMTcwLjhhNTUuMjIgNTUuMjIgMCAwMTE1LjE2OSA0OS41NDFjLTMuNDU2IDE3Ljk4Ni0xNS42NDkgMzMuMDI3LTMyLjQ4MyA0MC4yNkM3MTYuNDUgOTQ5LjI0NyA2NjQuMTg5IDk2MCA2MTMuMDE3IDk2MGMtODYuMzc2IDAtMTY5LjQ4OC0zMC42MjctMjMxLjg2Mi05Mi45NjktNjEuMTI2LTYxLjE1OC05MS45NDUtMTQyLjMxNy05My4wNjUtMjI2Ljk2NS0uNTc2LTQxLjQ0NCA2LjE3Ny04My42ODggMTkuNjUtMTI0LjgxMkwxOC43ODUgMjI2LjI5OUM0Ljk5MiAyMTIuNTM4LTEuMTg1IDE5NC4wNzIuMjIzIDE3Ni4wODZjMS4xNTItMTQuNjU3IDcuMzI5LTI5LjAyNyAxOC41NjItNDAuMjkyTDE5OS43OTQtNDUuMjE1YzEyLjUxMy0xMi41MTMgMjguODY3LTE4Ljc1NCA0NS4yNTItMTguNzU0czMyLjczOSA2LjI0MSA0NS4yNTIgMTguNzU0TDU3OS4yODUgMjQzLjc0YzM5LjU1Ni0xMi45MjkgODAuMTM2LTE5LjQ1OCAxMjAuMDQzLTE5LjQ1OCA4Ni4zMTIgMCAxNjkuMzkyIDMwLjU2MyAyMzEuNzM0IDkyLjkwNSA5OS4yNDEgOTkuMjQxIDExOC4wOTEgMjUxLjE2IDYwLjkzNCAzODQuOTY0ek04NjMuMTg1IDM4NS4wMzRjLTQxLjc5Ni00MS43OTYtOTkuOTc3LTY0Ljc3NC0xNjMuODU1LTY0Ljc3NC0zMC4wMTkgMC02MC4zNTggNC45Ni05MC4xODQgMTQuNzIxYTk1LjkzNCA5NS45MzQgMCAwMS0yOS44NTkgNC43MzZjLTI1LjA1OCAwLTQ5LjYwNS05LjgyNS02Ny44NzgtMjguMTMxTDI0NS4wNDggNDUuMjU3IDEwOS4yOTEgMTgxLjAxNCAzNzUuNjIgNDQ3LjM0M2MyNS41NyAyNS41NyAzNC41OTUgNjMuMzAyIDIzLjM2MiA5Ny43MDUtMTAuNDAxIDMxLjg0My0xNS41MjEgNjQuMDA2LTE0LjkxMyA5NS4wMTcgMS4yNDggNjEuMjU0IDIzLjg3NCAxMTcuOTMxIDY0LjkzNCAxNTkuMDU1IDQxLjg2IDQxLjgyOCAxMDAuMDczIDY0Ljg3IDE2NC4wMTUgNjQuODcgMTguMTQ2IDAgMzYuNjc1LTEuODg4IDU1LjA3Ny01LjUzN0w1NDUuMjk5IDczNS42MjVjLTIxLjQxLTIxLjE1NC0zMy4xODctNDkuNDEzLTMzLjE4Ny03OS41NTkgMC0yOS45MjMgMTEuNjQ5LTU4LjAyMSAzMi44MDMtNzkuMjA3bDk2LjAwOS05Ni4wMDljMjEuMTU0LTIxLjE1NCA0OS4yODUtMzIuODAzIDc5LjIwNy0zMi44MDNzNTguMDIxIDExLjY0OSA3OS4yMDcgMzIuODAzbDEyMy4xOCAxMjMuMThjMTYuMzU0LTgyLjY5Ni00LjY0LTE2NC4yNzEtNTkuMzM0LTIxOC45OTd6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kqCIgZ2x5cGgtbmFtZT0iaW1wcmVzb3JhIiBkPSJNOTc2IDc3OEg3NTR2MTMyYzAgMTQtMTQgMjgtMjggMjhIMjk0Yy0xNCAwLTI4LTE0LTI4LTI4Vjc3OEg0NGMtMjQgMC00NC0yMC00NC00NFYyMjZjMC0yNCAyMC00MiA0NC00MmgxNjhMMTg2IDhjLTQtMjAgMTQtMzggMzItMzhoNTg0YzE4IDAgMzIgMTYgMzIgMzR2OGwtMjggMTcyaDE3MGMyNCAwIDQ0IDE4IDQ0IDQydjUwOGMwIDI0LTIwIDQ0LTQ0IDQ0em0tNjM4IDg2aDM0NHYtODZIMzM4djg2ek0yNzIgNTJsNDQgMjU2aDM4OGw0NC0yNTZIMjcyem02NjIgMjE4SDc5NGwtMTQgOTJjLTIgMTYtMTYgMjgtMzIgMjhIMjcyYy0xNiAwLTMwLTEyLTMyLTI4bC0xNC05Mkg4NnY0MjJoODQ4VjI3MHpNMjE3LjY0NiA1MzYuNzA0aDE0MC43MDhjMjQuMzU0IDAgNDMuMjk0IDE4Ljk0IDQzLjI5NCA0My4yOTQgMCAyNC4zNTItMTguOTQyIDQzLjI5NC00My4yOTQgNDMuMjk0SDIxNy42NDZjLTI0LjM1NCAwLTQzLjI5NC0xOC45NDItNDMuMjk0LTQzLjI5NC0uMDAyLTI0LjM1MiAxOC45NC00My4yOTQgNDMuMjk0LTQzLjI5NHoiLz48Z2x5cGggdW5pY29kZT0i7qSpIiBnbHlwaC1uYW1lPSJpbmZvIiBkPSJNNTEyIDcwNGMtMzUuMzI4IDAtNjQtMjguNjcyLTY0LTY0czI4LjY3Mi02NCA2NC02NCA2NCAyOC42NCA2NCA2NC0yOC42NCA2NC02NCA2NHptMC0xOTJjLTM1LjMyOCAwLTY0LTI4LjY0LTY0LTY0VjI1NmMwLTM1LjMyOCAyOC42NzItNjQgNjQtNjRzNjQgMjguNjcyIDY0IDY0djE5MmMwIDM1LjMyOC0yOC42NCA2NC02NCA2NHptMCA0NDhDMjI5LjY5NiA5NjAgMCA3MzAuMzA0IDAgNDQ4UzIyOS42OTYtNjQgNTEyLTY0czUxMiAyMjkuNjk2IDUxMiA1MTItMjI5LjY5NiA1MTItNTEyIDUxMnptMC05MjhDMjgyLjU5MiAzMiA5NiAyMTguNjI0IDk2IDQ0OHMxODYuNTkyIDQxNiA0MTYgNDE2YzIyOS4zNzYgMCA0MTYtMTg2LjYyNCA0MTYtNDE2Uzc0MS4zNzYgMzIgNTEyIDMyeiIvPjxnbHlwaCB1bmljb2RlPSLupKoiIGdseXBoLW5hbWU9ImxpbmVhIiBkPSJNOTM5Ljg1MyA4ODEuMzA1Yy00Ny41NSA0Ny43MTYtMTI0LjgxNSA0Ny43NzMtMTcyLjQ4OS4xNjItMzUuMDUzLTM0Ljk0Mi00NC4xNDEtODUuODI3LTI3Ljc2NS0xMjkuMzMzbC01MTguNDQ1LTUxOC4xYy00My40NDcgMTYuNDQ4LTk0LjM3MSA3LjQ1LTEyOS40MDMtMjcuNS00Ny42OTItNDcuNTk4LTQ3Ljc3Ni0xMjQuODIxLS4xOTUtMTcyLjUwMSA0Ny42MTMtNDcuNzA0IDEyNC44MzYtNDcuNzk3IDE3Mi41MS0uMTc3IDM1LjA2NSAzNC45NDggNDQuMTY4IDg1Ljg0OCAyNy43OTIgMTI5LjMzM2w1MTguNDMzIDUxOC4xMDljNDMuNDUtMTYuNDY2IDk0LjM2Mi03LjQ3MSAxMjkuMzkxIDI3LjUwNiA0Ny43MjUgNDcuNTggNDcuNzg4IDEyNC44MjcuMTcxIDE3Mi41MDF6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kqyIgZ2x5cGgtbmFtZT0ibGluZWFzIiBkPSJNNjY5LjE2OCAyNTAuNjMyYy01My4zMTIgMTkuNjY4LTExMC43MjkgNC42MDYtMTQ4LjE0Ni0zMy40M2wtMjQxLjUxMyA4OC45OTdjLTMuNzgyIDUzLjE5OC0zNy42OTkgMTAxLjkwOC05MS4wMTUgMTIxLjU1Ny03Mi41OTMgMjYuNzU2LTE1My4wODYtMTAuMzg5LTE3OS44MTEtODIuOTY1LTI2Ljc1OC03Mi41OTMgMTAuMzg3LTE1My4xMDIgODIuOTgxLTE3OS44MTMgNTMuMzMxLTE5LjY2NiAxMTAuNzE0LTQuNjIxIDE0OC4xMyAzMy40MTVsMjQxLjUxMy04OS4wMTRjMy43OTgtNTMuMjE0IDM3LjczMi0xMDEuOTA2IDkxLjA0Ni0xMjEuNTM4IDcyLjU2MS0yNi43NzUgMTUzLjA2OSAxMC40MDUgMTc5Ljc5NiA4Mi45ODEgMjYuNzczIDcyLjU3Ni0xMC40MDUgMTUzLjA2OS04Mi45ODEgMTc5LjgwOXptMzMwLjA1NCA2MDUuNjRjLTQzLjg1IDYzLjcwMS0xMzEuMDgyIDc5LjcxOC0xOTQuNzUxIDM1LjgtNDYuNzk0LTMyLjIyMi02Ny41NjgtODcuODA0LTU4LjA1Ni0xNDAuMzE1TDUzNC40ODggNjA1LjY4MmMtNDUuNjY4IDI3LjU0Ny0xMDUuMDM0IDI3Ljg5OS0xNTEuODA3LTQuMzM4LTYzLjY4Ni00My45MDItNzkuNzIzLTEzMS4wODYtMzUuODM3LTE5NC43NTQgNDMuOTE5LTYzLjcwMyAxMzEuMTAyLTc5Ljc1NCAxOTQuNzcyLTM1LjgxOCA0Ni44MDkgMzIuMjIyIDY3LjU5NyA4Ny44MjMgNTguMDg1IDE0MC4zMTNsMjExLjkxNiAxNDYuMDc5YzQ1LjY2OC0yNy41NjYgMTA1LjAxNy0yNy45MiAxNTEuNzkzIDQuMzUyIDYzLjcxNiA0My44NzEgNzkuNzM1IDEzMS4wODggMzUuODEyIDE5NC43NTZ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6krCIgZ2x5cGgtbmFtZT0ibGlzdGEiIGQ9Ik05OS4wOTcgODExLjM1NEM0NC4zNjIgODExLjM1NCAwIDc2Ni45OTIgMCA3MTIuMjU5czQ0LjM2Mi05OS4wOTcgOTkuMDk3LTk5LjA5NyA5OS4wOTcgNDQuMzYzIDk5LjA5NyA5OS4wOTctNDQuMzYzIDk5LjA5NS05OS4wOTcgOTkuMDk1em0wLTI2NC4yNTdDNDQuMzYyIDU0Ny4wOTcgMCA1MDIuNzM0IDAgNDQ4YzAtNTQuNzM1IDQ0LjM2Mi05OS4wOTcgOTkuMDk3LTk5LjA5N3M5OS4wOTcgNDQuMzYyIDk5LjA5NyA5OS4wOTdjMCA1NC43MzQtNDQuMzYzIDk5LjA5Ny05OS4wOTcgOTkuMDk3em0wLTI2NC4yNTlDNDQuMzYyIDI4Mi44MzggMCAyMzguNDc2IDAgMTgzLjc0MXM0NC4zNjItOTkuMDk3IDk5LjA5Ny05OS4wOTcgOTkuMDk3IDQ0LjM2MyA5OS4wOTcgOTkuMDk3YzAgNTQuNzM1LTQ0LjM2MyA5OS4wOTctOTkuMDk3IDk5LjA5N3ptMjMxLjIyNSAzNjMuMzU2aDYyNy42MTJjMzYuNTAxIDAgNjYuMDY1IDI5LjU2NCA2Ni4wNjUgNjYuMDY1cy0yOS41NjQgNjYuMDY1LTY2LjA2NSA2Ni4wNjVIMzMwLjMyMmMtMzYuNTAxIDAtNjYuMDY1LTI5LjU2NC02Ni4wNjUtNjYuMDY1czI5LjU2NC02Ni4wNjUgNjYuMDY1LTY2LjA2NXptNjI3LjYxMy0xMzIuMTI5SDMzMC4zMjJjLTM2LjUwMSAwLTY2LjA2NS0yOS41NjQtNjYuMDY1LTY2LjA2NSAwLTM2LjQ5OSAyOS41NjQtNjYuMDY1IDY2LjA2NS02Ni4wNjVoNjI3LjYxMmMzNi41MDEgMCA2Ni4wNjUgMjkuNTY1IDY2LjA2NSA2Ni4wNjUuMDAyIDM2LjUwMS0yOS41NjIgNjYuMDY1LTY2LjA2MyA2Ni4wNjV6bTAtMjY0LjI1OEgzMzAuMzIyYy0zNi41MDEgMC02Ni4wNjUtMjkuNTY1LTY2LjA2NS02Ni4wNjVzMjkuNTY0LTY2LjA2MyA2Ni4wNjUtNjYuMDYzaDYyNy42MTJjMzYuNTAxIDAgNjYuMDY1IDI5LjU2NCA2Ni4wNjUgNjYuMDYzcy0yOS41NjIgNjYuMDY1LTY2LjA2MyA2Ni4wNjV6Ii8+PGdseXBoIHVuaWNvZGU9Iu6krSIgZ2x5cGgtbmFtZT0ibG9jYWxpemFjaW9uIiBkPSJNNDE3Ljg4MSAyOTcuODE4bDIzLjc0Ny01OS4zODNjLTIyLjk5Ny05LjE4OS00NS45MzMtMTYuMTkxLTY4LjMxLTIwLjg3MmwtMTMuMDY2IDYyLjYxNGMxOC43NTMgMy45NTMgMzguMTI3IDkuODgxIDU3LjYyOSAxNy42NDF6bS0xOTAuNDQtNzYuNjk3YzIzLjQzNi02Ljc0NyA0OC4xMy0xMC4zNzMgNzMuMzc1LTEwLjc0NmwxLjAwNSA2My45OTJjLTE5LjYyOS4zMjMtMzguNjkgMy4wNjItNTYuNjg4IDguMjQzbC0xNy42OTItNjEuNDg5em01MDMuOTMyIDExMS42OTRjMTguNDQ3LTMuNjM2IDM2LjQ0My05Ljk0OSA1My41MDQtMTguNzU1bDI5LjM5MiA1Ni44NzJjLTIyLjUwOCAxMS41NjMtNDYuMTk1IDE5Ljg3Ni03MC41MTQgMjQuNjMzbC0xMi4zODItNjIuNzQ5em0tMTMzLjUwMiA1Mi40OTdsMTkuMTM3LTYwLjk5OGMxOS41NTEgNi4xMjcgMzguODc2IDkuOTk3IDU3LjQ5IDExLjQ5NWwtNS4xMTEgNjMuNzU0Yy0yMy4zODEtMS44OC00Ny40NDQtNi42OTYtNzEuNTE2LTE0LjI1MnptLTEwMi43NDItNDguMTI2Yy03LjE4NC00LjUwMi0xNC4yNTItOC42MTctMjEuMTkxLTEyLjQ5OGwzMS4xMjktNTUuODg2YzcuODExIDQuMzk0IDE1LjgwOSA5LjAwMyAyMy44MDYgMTQuMDA3IDExLjAwNCA2LjgxNSAyMS43NTggMTIuODgyIDMyLjMxNyAxOC4yNjJsLTI5LjA2NyA1Ni45OWE1MTkgNTE5IDAgMDEtMzYuOTk0LTIwLjg3NHptMTc2Ljg3OSAzOTguODEzYzAtMjYuMTI1LTYuMjY0LTUwLjg3Ni0xNy4zODQtNzIuNjNMNTEyLjAwMyAzODQuMDAzUzM2OC4yNTMgNjY1LjY5IDM2Ny42OTIgNjY2Ljg3Yy0xMC4wNjcgMjAuODc2LTE1LjY4NSA0NC4zNzgtMTUuNjg1IDY5LjEyOSAwIDg4LjM3NCA3MS42MjIgMTYwIDE1OS45OTYgMTYwIDg4LjM2OCAwIDE2MC4wMDQtNzEuNjI2IDE2MC4wMDQtMTYwem0tNjQgMGMwIDUzLjAwMS00My4wMDQgOTYuMDAzLTk2LjAwMyA5Ni4wMDMtNTMuMDAxIDAtOTYuMDAzLTQzLjAwMi05Ni4wMDMtOTYuMDAzIDAtNTIuOTk1IDQzLjAwMi05NS45OTcgOTYuMDAzLTk1Ljk5NyA1Mi45OTkgMCA5Ni4wMDMgNDMuMDAyIDk2LjAwMyA5NS45OTd6bTIyMy45OTYtMTYwSDY4MS44ODdsLTMyLjcwMS02NC4wMDNoMTM2LjY5Mmw2OS4wNjYtMjA3LjI1NC0yMi4wNjItMjQuMzc4YzIzLjUwMi0yMS4yMzUgMzUuNjg1LTQwLjgwNyAzNS43NTMtNDAuODc1bDYuNzQ3IDQuMDU4TDkzNS4xOTggNjRIODguNzVsNjQuMTMgMTkyLjE4MmMyLjI1LTEuNTY0IDMuOTk1LTMuMDYyIDYuNDk2LTQuNjE4bDM0LjAwNSA1NC4xMjRjLTcuNjI3IDQuODE2LTEzLjg3OCA5LjU2NC0xOS4zOCAxMy45OTZsNjQuMTMyIDE5Mi4zMTNoMTM2Ljc0NUEzNTQ5Ny44NCAzNTQ5Ny44NCAwIDAwMzQyLjE5MiA1NzZIMTkyLjAwNEwuMDAyLS4wMDNoMTAyNC4wMDJMODMyLjAwNiA1NzUuOTk4eiIvPjxnbHlwaCB1bmljb2RlPSLupK4iIGdseXBoLW5hbWU9ImxvY2FsaXphY2lvbjIiIGQ9Ik04MzIgODY0Yy04OC4zNzYgMC0xNjAtNzEuNjI2LTE2MC0xNjAgMC0yMy44NzYgNS4yNS00Ni41NjIgMTQuNjI0LTY2Ljg3Nkw4MzIgMzUybDE0NS4zNzYgMjg1LjEyNkM5ODYuNzUgNjU3LjQzOCA5OTIgNjgwLjEyNCA5OTIgNzA0YzAgODguMzc0LTcxLjYyNCAxNjAtMTYwIDE2MHptMC0yNTZjLTUzIDAtOTYgNDMtOTYgOTZzNDMgOTYgOTYgOTYgOTYtNDMgOTYtOTYtNDMtOTYtOTYtOTZ6bTQ3Ljg3Ni0zMDIuOTM4bDU4LjI1LTExNi40MzgtMTQ3LjY4OC03My44MTItNDkuNSAyNDcuNjI0IDkuMTg4IDkuMTg4LTMwLjUgNjBMNzA0IDQxNiA1MTIgNTQ0IDMyMCA0MTYgMTkyIDU0NCAwIDE2MCAyNTYgMzJsMjU2IDEyOEw3NjggMzJsMjU2IDEyOC0xMDggMjE1LjkzOC0zNi4xMjQtNzAuODc2ek0yMzMuNSAxMTQuODEyTDg1Ljg3NCAxODguNjI0IDIwOS41IDQzNmw3My41NjItNzMuNTYyTDIzMy41IDExNC44MTJ6TTQ4MCAyMTUuNTYybC0xNzktODkuNSA0Ni4yNSAyMzEuMTg4TDQ4MCA0NDUuNzVWMjE1LjU2MnptNjQgMFY0NDUuNzVsMTMyLjY4OC04OC41IDQ2LjI1LTIzMS4xODhMNTQ0IDIxNS41NjJ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kryIgZ2x5cGgtbmFtZT0ibG9jYWxpemFjaW9uMyIgZD0iTTk0MS45MDUgNjQ4LjIzOWMtMTEuNzg2LTIyLjc2Ny0yNS40MTEtNDUuODQzLTM5Ljc3My02OC4zMDVsLTUuNzAzLTguODM0Yy0xMi4wOTItMTguNTM5LTI0LjU4My0zNi41NjEtMzYuODQtNTMuNTQgNDcuMTI2LTI5LjA2NSA3My4zODgtNjIuNzcgNzMuMzg4LTk1LjYyOSAwLTQxLjMyMi00MS40OTEtODMuOTkyLTExMy44MzktMTE3LjA3MS0yMy43NTUtMTAuODYxLTQ5LjkwOS0yMC4yNTMtNzcuODUtMjguMTc4IDUuNDUgMzYuNjY4IDguODI0IDc0Ljg3NSAxMC4wMTYgMTEzLjk1Ni0yLjc1Ny0uNzUtNS42MDktMS4xODUtOC41MjYtMS4xODVhMzIuNDc2IDMyLjQ3NiAwIDAwLTI0LjUxMSAxMS4xNzJjLTQuNDY5IDUuMTQxLTE2LjAyNSAxOC41ODEtMzEuNTgyIDM3Ljc0OS4wOTEtNS40NjkuMTc1LTEwLjk0Mi4xNzUtMTYuNDQ0IDAtNTYuMTQ4LTQuODA3LTExMC41Mi0xMy45MS0xNjAuOTQ5LTUwLjQyNi05LjEtMTA0Ljc5Ny0xMy45MS0xNjAuOTQyLTEzLjkxLTU2LjE1NSAwLTExMC41MyA0LjgwNy0xNjAuOTY1IDEzLjkxLTkuMSA1MC40MjktMTMuOTA3IDEwNC44LTEzLjkwNyAxNjAuOTQ5czQuODA3IDExMC41MiAxMy45MDcgMTYwLjk0OWM1MC40MzIgOS4xIDEwNC44MSAxMy45MSAxNjAuOTY1IDEzLjkxIDIwLjk4MSAwIDQxLjcxMi0uNjcyIDYyLjA4Mi0xLjk4OC0xMy42MjUgMjIuMDk4LTI2LjMxNyA0NC41ODMtMzcuMDY0IDY2LjYwMy04LjMwOC4yMDUtMTYuNjM5LjM0MS0yNS4wMTguMzQxLTUwLjAwMyAwLTk4Ljg1Ny0zLjYzOC0xNDUuMjY1LTEwLjUzMyA3LjkyMSAyNy45NDQgMTcuMzE3IDU0LjA5OSAyOC4xNzggNzcuODUzQzQyOCA4MDEuNDA3IDQ3MC42NyA4NDIuOTAxIDUxMS45OTIgODQyLjkwNGguMDFjLjc5NiAwIDEuNTk1LS4wNDUgMi4zOTQtLjA3NWEyMzguMDA0IDIzOC4wMDQgMCAwMDMwLjUzMyA2My44OTFjLTEwLjg4My43MzEtMjEuODU1IDEuMTQtMzIuOTIzIDEuMTRINTExLjk4N2MtMjY3LjkzNS0uMDEtNDg1LjkxOC0yMTcuOTkzLTQ4NS45MTgtNDg1LjkzMVMyNDQuMDQ5LTYzLjk5MyA1MTEuOTkxLTY0LjAwMkg1MTIuMDFjMjY3LjkzOCAwIDQ4NS45MjIgMjE3Ljk4NyA0ODUuOTIyIDQ4NS45MzEuMDAzIDgxLjY3LTIwLjI4MyAxNTguNjgyLTU2LjAyNSAyMjYuMzA4ek0zNzAuODE5IDgxOC41MjJjLTEyLjU2Ni0xOC4yMjctMjQuMjgxLTM5LjA2NS0zNC45NzItNjIuNDQ2LTE2LjE4MS0zNS4zOTUtMjkuNDQ4LTc1LjMyMy0zOS42NDYtMTE4LjM1NC00My4wMjQtMTAuMTk4LTgyLjk1Mi0yMy40NjItMTE4LjM0Ny0zOS42NDMtMjMuMzgxLTEwLjY5Mi00NC4yMjUtMjIuNDA3LTYyLjQ1Mi0zNC45NzYgNDIuMzk3IDExOC43NCAxMzYuNjc4IDIxMy4wMjEgMjU1LjQxOCAyNTUuNDE4ek0yMDQuODY2IDUzOS4wMDVjMjMuNzU1IDEwLjg2MSA0OS45MDYgMjAuMjUgNzcuODQ3IDI4LjE3NS02Ljg5NS00Ni40MDItMTAuNTI5LTk1LjI0OS0xMC41MjktMTQ1LjI0OXMzLjYzNC05OC44NDQgMTAuNTI5LTE0NS4yNDVjLTI3Ljk0MSA3LjkyMS01NC4wOTIgMTcuMzE0LTc3Ljg0NCAyOC4xNzUtNzIuMzQ4IDMzLjA4Mi0xMTMuODQyIDc1Ljc1Mi0xMTMuODQyIDExNy4wNzEtLjAwMyA0MS4zMjIgNDEuNDkxIDgzLjk5NSAxMTMuODM5IDExNy4wNzR6bS04OS40NjUtMjU4LjI0M2MxOC4yMjctMTIuNTY2IDM5LjA3MS0yNC4yODQgNjIuNDUyLTM0Ljk3NiAzNS4zOTEtMTYuMTgxIDc1LjMyLTI5LjQ0OCAxMTguMzQ3LTM5LjY0NiAxMC4xOTgtNDMuMDI3IDIzLjQ2NS04Mi45NTkgMzkuNjQ2LTExOC4zNTQgMTAuNjkyLTIzLjM4MSAyMi40MDctNDQuMjE5IDM0Ljk3Mi02Mi40NDZDMjUyLjA3OCA2Ny43MzcgMTU3Ljc5NCAxNjIuMDIxIDExNS40IDI4MC43NjF6TTUxMi4wMDIuOTU2aC0uMDFDNDcwLjY3Ljk1OSA0MjggNDIuNDUzIDM5NC45MjEgMTE0Ljc5NWMtMTAuODYxIDIzLjc1NS0yMC4yNTMgNDkuOTA5LTI4LjE3OCA3Ny44NTMgNDYuNDA4LTYuODk1IDk1LjI1OC0xMC41MzMgMTQ1LjI2NS0xMC41MzMgNDkuOTk3IDAgOTguODQxIDMuNjM0IDE0NS4yMzkgMTAuNTI5LTcuOTIxLTI3Ljk0NC0xNy4zMTctNTQuMDk2LTI4LjE3OC03Ny44NUM1OTUuOTkzIDQyLjQ0OSA1NTMuMzIuOTU1IDUxMi4wMDIuOTU1em0xNDEuMTY2IDI0LjM3NWMxMi41NjYgMTguMjI3IDI0LjI4NyAzOS4wNzEgMzQuOTc5IDYyLjQ1NSAxNi4xODQgMzUuMzk1IDI5LjQ1MSA3NS4zMjMgMzkuNjQ5IDExOC4zNTQgNDMuMDI3IDEwLjE5NSA4Mi45NTkgMjMuNDY1IDExOC4zNTQgMzkuNjQ2IDIzLjM4MSAxMC42OTIgNDQuMjIyIDIyLjQwNyA2Mi40NDkgMzQuOTc2LTQyLjM5Ny0xMTguNzUtMTM2LjY4NC0yMTMuMDM3LTI1NS40MzEtMjU1LjQzMXptOTAuNjkyIDQzMi4yMjZhOS43NCA5Ljc0IDAgMDE3LjUzMiAzLjU2M2MyOS45MzggMzYuNDczIDE3OS4yNzkgMjIyLjkzIDE3OS4yNzkgMzEyLjA3NiAwIDEwMy4wMDQtODMuODAzIDE4Ni44MDUtMTg2LjgwOCAxODYuODA1cy0xODYuODA1LTgzLjgtMTg2LjgwNS0xODYuODA1YzAtODkuMTgyIDE0OS4zMzQtMjc1LjYxMyAxNzkuMjctMzEyLjA3NmE5Ljc0IDkuNzQgMCAwMTcuNTMyLTMuNTYzek02NDMuMTgxIDc4NC4wNjljMCA1NS41MTUgNDUuMTY3IDEwMC42ODIgMTAwLjY4MiAxMDAuNjgyczEwMC42ODItNDUuMTY3IDEwMC42ODItMTAwLjY4Mi00NS4xNjctMTAwLjY4Mi0xMDAuNjgyLTEwMC42ODItMTAwLjY4MiA0NS4xNjQtMTAwLjY4MiAxMDAuNjgyeiIvPjxnbHlwaCB1bmljb2RlPSLupLAiIGdseXBoLW5hbWU9ImxvY2FsaXphY2lvbjQiIGQ9Ik04OTYuMDAzIDMyMC4wMDFINzY4VjQ0OGgxMjguMDAzVjMyMC4wMDF6TTY3Mi4wMDggNzk5Ljk5N2MwLTIzLjg3NS01LjI1OS00Ni41NjQtMTQuNjI3LTY2Ljg3N0w1MTIuMDAzIDQ0OC4wMDMgMzY2LjYyNSA3MzMuMTI5Yy05LjM3MiAyMC4zMDQtMTQuNjE3IDQyLjk5My0xNC42MTcgNjYuODY5IDAgODguMzc4IDcxLjYyMSAxNjAuMDAzIDE1OS45OTUgMTYwLjAwMyA4OC4zNyAwIDE2MC4wMDYtNzEuNjMgMTYwLjAwNi0xNjAuMDAzem0tNjQuMDAxIDBjMCA1Mi45OTktNDMuMDA0IDk2LjAwMy05Ni4wMDMgOTYuMDAzLTUzLjAwMSAwLTk2LjAwMy00My4wMDItOTYuMDAzLTk2LjAwM3M0My4wMDItOTUuOTk5IDk2LjAwMy05NS45OTljNTIuOTk5IDAgOTYuMDAzIDQyLjk5OCA5Ni4wMDMgOTUuOTk5ek0xMDI0IDcwMy45OThWNjQuMDAzQzEwMjQtNi42OTYgOTY2LjY4NS02NCA4OTYuMDA1LTY0SDEyOC4wMDFDNTcuMzE3LTY0IC4wMDItNi42OTYuMDAyIDY0LjAwM3Y2MzkuOTk1YzAgNzAuNjg0IDU3LjMxNSAxMjguMDAzIDEyNy45OTkgMTI4LjAwM0gyOTEuMjVjLTEuNDk2LTEwLjQ5OS0zLjI1LTIxLjAwNS0zLjI1LTMyLjAwNyAwLTEwLjgxIDEuOTk5LTIxLjM3MiAzLjUwOC0zMS45OTZoLTM1LjUwNFY1NzUuOTk2aDExOC44NzRsMzIuNjI1LTY0LjAwM0gyNTYuMDAydi0yNTZoMzgzLjk5M3YyNTYuMDAyaC0yMy41NWw4Ny41NjEgMTcxLjc1NFY1NzUuOTk1aDI1Ni4wMDJ2MTI3Ljk5OWMwIDM1LjMwOS0yOC42OTMgNjQuMDAzLTY0LjAwMyA2NC4wMDNINzMyLjU2NGMxLjU2NiAxMC42MjQgMy40MzggMjEuMTIzIDMuNDM4IDMxLjk5NiAwIDExLjAwMi0xLjY4NCAyMS41MDUtMy4yNSAzMi4wMDdoMTYzLjI1M0M5NjYuNjg1IDgzMiAxMDI0IDc3NC42ODEgMTAyNCA3MDMuOTk3ek0xOTIuMDA0IDE5Mi4wMDZINjQuMDA1VjY0LjAwM0M2NC4wMDUgMjguNjgzIDkyLjc1NSAwIDEyOC4wMDEgMGg2NC4wMDN2MTkyLjAwNnptMCAzMTkuOTlINjQuMDA1di0yNTZoMTI3Ljk5OXYyNTZ6bTAgMjU2LjAwMmgtNjQuMDAzYy0zNS4yNDYgMC02My45OTYtMjguNjkxLTYzLjk5Ni02NC4wMDNWNTc1Ljk5NmgxMjcuOTk5djE5Mi4wMDJ6bTQ0Ny45OTMtNTc1Ljk5MkgyNTYuMDA0VjBoMzgzLjk5M3YxOTIuMDA2em0zMjAuMDExIDBoLTI1NlYwaDE5MS45OTdjMzUuMzA5IDAgNjQuMDAzIDI4LjY4MyA2NC4wMDMgNjQuMDAzdjEyOC4wMDN6bTAgMzE5Ljk5aC0yNTZ2LTI1NmgyNTZ2MjU2eiIvPjxnbHlwaCB1bmljb2RlPSLupLEiIGdseXBoLW5hbWU9Im1hbm8iIGQ9Ik0xMzEuNDE3IDM2Ni45ODZjLjAwMyAyNC41MjIgMTAuMDk4IDQ4Ljk0NiAyOS44NzUgNjYuNTE2IDM2LjcxMyAzMi41OTcgOTIuOTE1IDI5LjI4MiAxMjUuNDk2LTcuNDM0bDMxLjQ4Ny0zNS40MzJ2NDAxLjE3MWMwIDQ5LjEwNyAzOS43ODkgODguOTEzIDg4LjkwNiA4OC45MTMgNDkuMDg4IDAgODguOTA2LTM5LjgwNSA4OC45MDYtODguOTEzVjU4My44MzRjMTMuMjgyIDcuODc1IDI4LjcwOCAxMi40OCA0NS4yNiAxMi40OCAzNy43MTggMCA2OS44OS0yMy41MiA4Mi44MDQtNTYuNzEzIDEzLjgyMSA4Ljg1MiAzMC4xOTYgMTQuMDQ3IDQ3LjgyMyAxNC4wNDcgNDMuNDUzIDAgNzkuNTY5LTMxLjE1NyA4Ny4zMjEtNzIuMzQyIDEzLjA1NCA3LjUxMyAyOC4xNTMgMTEuODg3IDQ0LjI4MyAxMS44ODcgNDkuMDg4IDAgODguOTA2LTM5LjgyMSA4OC45MDYtODguOTE2bC4wODItMjE3Ljk0MWMwLTk0LjQ2OS04NS41NTEtMTcxLjAzOC0xOTEuMDU3LTE3MS4wMzhINTEwLjUxM2MtNTcuMTgyIDAtMTIzLjcxMyAzNi4xMzMtMTYyLjcxIDc0LjMwMkwxNTMuODUxIDMwNy45NzNjLTE1LjAzNiAxNi45MzktMjIuNDM1IDM4LjAxLTIyLjQzNSA1OS4wMTV6bS03OS4yODcuMDA2Yy0uMDAzLTQxLjE5OCAxNS4wNzQtODAuODYgNDIuNDU3LTExMS42NzhMMjg4LjUzIDM2Ljk0NGE3OS41OTUgNzkuNTk1IDAgMDEzLjgyMi00LjAxNWMyNi4xOS0yNS42MzUgNjAuMTM1LTQ5LjE1NSA5NS41ODUtNjYuMjMzIDQxLjY4My0yMC4wODIgODQuMDc2LTMwLjY5NCAxMjIuNTg0LTMwLjY5NGgxOTAuOTk2YzcwLjU3MiAwIDEzNy4zMzggMjQuOTY5IDE4Ny45NzcgNzAuMzA2IDUzLjExIDQ3LjU1MyA4Mi4zNjcgMTExLjQ4MSA4Mi4zNjcgMTgwLjAyM2wtLjA3OSAyMTcuOTczYzAgOTIuNzEyLTc1LjQ1IDE2OC4xNjUtMTY4LjE5IDE2OC4xNjUtLjgxOCAwLTEuNjQtLjAwNi0yLjQ0OC0uMDE5LTMxLjEyMiAzNy4yNDktNzcuODYzIDYwLjQ2MS0xMjkuMTYyIDYwLjQ2MS01LjkzMSAwLTExLjgzMy0uMzE0LTE3LjY5NC0uOTM5YTE2Ni4zNzIgMTY2LjM3MiAwIDAxLTE2Ljg2IDEzLjQyOGMtMTguODM1IDEzLjE0OS0zOS44NzIgMjIuMTY5LTYyLjA0NCAyNi43Mjl2MTE5LjY2YzAgOTIuNzQ0LTc1LjQ1MyAxNjguMTk3LTE2OC4xOSAxNjguMTk3LTkyLjc0MSAwLTE2OC4xOTctNzUuNDUzLTE2OC4xOTctMTY4LjE5N1Y1MzQuMTY2Yy0yLjg4My4zMjctNS43OTEuNTcxLTguNzE1LjczNi00NC44MzggMi42NTgtODguMDMxLTEyLjMxMi0xMjEuNjE3LTQyLjEyNy0zNS45MzMtMzEuODk2LTU2LjUyOS03Ny43MzktNTYuNTM1LTEyNS43ODR6Ii8+PGdseXBoIHVuaWNvZGU9Iu6ksiIgZ2x5cGgtbmFtZT0ibWFubzIiIGQ9Ik01MTEuODU3IDgzNC4yODRjNzEuMzA0IDAgNTEuMDI1LTEwOS45NTggNTQuNDIyLTE4Ny4xNTIgMi41MjQtNTcuMzY1LTYuMDMzLTE0Ni40OTMgMjIuMTAyLTE1MS41MDlhMTUuMTcgMTUuMTcgMCAwMTIuNjg5LS4yNDNjMzIuNjM5IDAgMzcuMzI2IDExMS4zNjIgNDEuNTExIDEzOS4xMjQgNi42NTYgNDQuNDIyIDEyLjQ2MyAxMzMuNjA3IDM0LjcyMyAxNDguMzgzIDguMzM1IDUuNTMyIDE5LjgyOCA4LjIxNyAzMS43NDggOC4yMTcgMjIuMzAyIDAgNDYuMDk4LTkuNDAyIDUzLjQ2My0yNy4xNTcgMTEuOTY2LTI4Ljg1OC0xNi4xMDEtMTIyLjI0My0yMi4wOTgtMTU3Ljg1Ny04LjMwMy00OS41NjctMzMuODQ5LTE0MS40MDUgOS40NzQtMTQyLjAzOS4xMjIgMCAuMjQzLS4wMDQuMzY5LS4wMDQgMjMuOTA2IDAgMzQuOTYzIDM1LjY4NiA0OC43NjIgNzEuMzc5IDEzLjc5OSAzNS42ODYgMzAuMzQ0IDcxLjM3OSA2NS4yMDMgNzEuMzc5IDIuODExIDAgNS43MzYtLjIyOSA4Ljc5LS43MTMgNTcuNjItOS4wOTEgMjAuMDUtOTIuMjgyIDYuMzE5LTEyOS40MTEtNDguOTczLTEzMi4zNzUtNzMuNDctMjAzLjc2Mi0xMjMuMTMxLTMzNy43NzctNi4yOC0xNi45MjEtMjEuNTk0LTY0LjE1LTI1LjI1Ni02Ni4yOTktMTcuNjE5LTEwLjMzLTE0NC4xNTgtMTIuNjI4LTE2NC4xMzctMTIuNjI4LTM2LjgxNyAwLTEyNC4yNjYuNjk1LTE2NC4xMzcgMTIuNjI4LTE3LjUyMyA1LjIzOC01MS43NzMgNTUuODgtNjYuMzAyIDc1Ljc2OS01MC42NDEgNjkuMzI4LTY2LjczOSA5OS40MTQtMTE5Ljk2OSAxNjQuMTM3LTIxLjgxNSAyNi41NDktNTkuMDM4IDU4LjU2NS01OS45NTQgNzguOTI3LTEuMzI4IDI5LjE0MSAzMi44NjUgNDkuODUgNTAuNDggNTAuNTA5LjUyMy4wMTggMS4wNDUuMDI5IDEuNTY4LjAyOSAzMC4wMjkgMCA1Ny44Ny0zMS4wNTMgNzcuMzU5LTUwLjUzOCA5LjIyMy05LjIyMyA0NC40OTctNTcuOTM4IDY3LjE0NC01Ny45MzggMS45MjMgMCAzLjc1Mi4zNTQgNS40NzEgMS4xMSAyMi40MTMgOS44ODktMy45MjEgNjYuNzE4LTEyLjYyOCA4OC40MDEtMjYuMDc2IDY0Ljk0Mi00Ni42OTYgMTEwLjQzOC02OS40NTcgMTY3LjI5NS0xMC41NzcgMjYuNDU2LTMwLjU1OSA2NS42MDQtMjguNDE0IDg4LjM5NyAyLjg2NCAzMC4zMDUgMjguODgzIDQ3LjU5NSA1NC43MzcgNDcuNTk1YTU3LjA5IDU3LjA5IDAgMDA1LjI0OS0uMjRjNDYuNzI0LTQuMzI1IDYwLjIwNS03OS41NjEgNzUuNzY5LTExNi44MTEgMTEuNTU4LTI3LjcyIDIzLjU1Mi02NC44NDkgNDQuMi0xMDAuOTk2LS4wMzIgMCAxMy44MS0yNS4zMDYgMjEuNDkzLTI1LjMwNi4xOTcgMCAuMzg3LjAxOC41NzYuMDUgMjEuNzE5IDMuODUzIDEzLjAwOCAxMjEuOTYgMTIuNjI4IDE1Ny44MjUtLjgyIDc5LjY4Ni0yNy44NDkgMTgxLjYzMSA0Ny4zNTUgMTkyLjU1MSA0LjIxNC42MTIgOC4xNzguOTEzIDExLjg4LjkxM3ptMCA3NS4xODljLTcuMzQ3IDAtMTQuOTkxLS41NzMtMjIuNzIxLTEuNzAxLTU4LjExNC04LjQzOS05OC45MjctNDcuNjQxLTExMS45MzUtMTA3LjU0OS0yLjA0OC05LjQ0Mi0zLjM4LTE5LjA3My00LjE3NS0yOC44MTUtMjMuNjg4IDIwLjY1NS00OC42ODcgMjcuNzItNjguMTQzIDI5LjUyMS00LjA1Ny4zNzItOC4xMzguNTU5LTEyLjE3Ny41NTktNjcuNjQ1LS4wMDQtMTIzLjM1Ni00OS43NS0xMjkuNTktMTE1LjcwOC0zLjUwNS0zNy4yMzMgMTIuNTQyLTc0LjUwOSAyNi43MDYtMTA3LjM5OCAyLjUzMS01Ljg3NSA0LjkyMy0xMS40MjUgNi43NDYtMTUuOTg3IDYuNTE2LTE2LjI4NCAxMi43ODItMzEuNDYxIDE5LjA1MS00Ni40MzhhMTIyLjAyNSAxMjIuMDI1IDAgMDEtMjEuNDIyIDEuMTMyYy0zMS45NDgtMS4xOTktNjYuNzA3LTE4LjIwNi05MC43OTktNDQuMzktMjIuMDctMjMuOTgyLTMzLjQ1NS01NC4wNTQtMzIuMDYzLTg0LjY4MSAxLjg5LTQyLjEyNyAzMC43MzQtNzMuMDIzIDU4LjYyOS0xMDIuOTAxIDYuOTc1LTcuNDY5IDEzLjU1OS0xNC41MjYgMTguMzQyLTIwLjM0NCAzMi4xNDUtMzkuMDg3IDQ5LjYwMy02NC4zMDggNzEuNzA1LTk2LjIzOCAxMi41OTktMTguMjAzIDI2Ljg3OC0zOC44MzMgNDUuNjM2LTY0LjUxMiAxLjcxOS0yLjM1MiAzLjczMS01LjE2NyA1Ljk3Ni04LjI5OSAzNS45ODMtNTAuMjY5IDYyLjM0OS04NC4wNSA5OS41MDctOTUuMTU3IDM1Ljk2Mi0xMC43NjMgOTQuOTcxLTE1Ljc3OSAxODUuNjczLTE1Ljc3OSAxMS43MDQgMCA0OS44MDQuNjQxIDg2LjgxMSAyLjU0MiA3NC42MTIgMy44MzEgOTcuMzg0IDkuODgyIDExNS4zNSAyMC40MTIgMjQuNzMgMTQuNTAxIDMzLjE5IDM2Ljk2OCAzOS45ODYgNTUuMDI3IDMuNzY3IDEwLjAxMSA3LjkxNiAyMS45NTkgMTEuNTc1IDMyLjQ5OSAyLjQzNSA3LjAwNyA0LjczIDEzLjYyNyA2LjE1OCAxNy40NjkgMjUuNDM1IDY4LjYzMyA0NC41OTEgMTIxLjczNCA2My4xMTkgMTczLjA4NSAxNy43NTkgNDkuMjI3IDM2LjEyNiAxMDAuMTM0IDYwLjA0IDE2NC43NzEgMS4wNjcgMi44ODIgMi4yODggNi4wNTQgMy41OTUgOS40NjcgMTcuMDYxIDQ0LjQ0IDQyLjgzNiAxMTEuNTk4IDEwLjQwMSAxNjcuNzM2LTE2LjQzNCAyOC40NDMtNDQuNTMgNDcuMTExLTc5LjExNyA1Mi41NjhhMTMxLjg5MyAxMzEuODkzIDAgMDEtMjAuNTA5IDEuNjMzYy0xMC43NDggMC0yMS4yMzktMS4zOTMtMzEuMzIyLTQuMTAzIDkuMjQ4IDQ3LjcyNyAxMS43MDEgODQuNDA1LS45MzEgMTE0Ljg2LTE4LjUzNiA0NC42OC02Ni43NzggNzMuNTQ5LTEyMi45MTYgNzMuNTQ5LTI3LjUwOCAwLTUyLjg2MS03LjE3OS03My4zMjMtMjAuNzU2YTk2LjI1MSA5Ni4yNTEgMCAwMS00LjI3OS0zLjAwOGMtNS43ODIgMTEuNDc1LTEzLjE2OSAyMi4xNjMtMjIuNTkyIDMxLjc1MS0yMi42MjggMjMuMDE1LTUyLjcxNSAzNS4xODUtODYuOTk3IDM1LjE4NXoiLz48Z2x5cGggdW5pY29kZT0i7qSzIiBnbHlwaC1uYW1lPSJtYXBhIiBkPSJNOTc2IDgzOEw3NTIgOTQyYy00IDItMTAgMi0xNiAycy0xMiAwLTE2LTJsLTIxMC05OC0yMTAgOThjLTQgMi0xMCAyLTE2IDJzLTEyIDAtMTYtMkw0MiA4MzhjLTE0LTYtMjItMjItMjItMzZWMTIyYzAtMjAgMTYtMzggMzgtMzggNiAwIDEwIDIgMTYgNGwyMTAgOTYgMjEwLTk2YzQtMiAxMC00IDE2LTRzMTIgMiAxNiA0bDIxMCA5NiAyMDgtOTZjNi0yIDEwLTQgMTYtNCAyMiAwIDM4IDE4IDM4IDM4djY4MGMwIDE0LTggMzAtMjIgMzZ6TTI0NiAyNTBMOTYgMTgydjU5NmwxNTAgNzBWMjUwem0yMjYtNjhsLTE1MCA2OHY1OThsMTUwLTcwVjE4MnptMjI2IDY4bC0xNTAtNjh2NTk2bDE1MCA3MFYyNTB6bTIyNC02OGwtMTQ4IDY4djU5OGwxNDgtNzBWMTgyeiIvPjxnbHlwaCB1bmljb2RlPSLupLQiIGdseXBoLW5hbWU9Im1hcyIgZD0iTTgyNCA1ODBjMzYgMCA2NC0zMCA2NC02NnMtMjgtNjYtNjQtNjZINTc2VjIwMGMwLTM2LTMwLTY0LTY2LTY0cy02NiAyOC02NiA2NHYyNDhIMTk2Yy0zNiAwLTY2IDMwLTY2IDY2czMwIDY2IDY2IDY2aDI0OHYyNDhjMCAzNiAzMCA2NiA2NiA2NnM2Ni0zMCA2Ni02NlY1ODBoMjQ4eiIvPjxnbHlwaCB1bmljb2RlPSLupLUiIGdseXBoLW5hbWU9Im1hczIiIGQ9Ik01NDQuMjg5IDY4Ni42NTFjLTguNTU0IDcuODc1LTE5Ljc1NSAxMi45NjYtMzIuMzEzIDEyLjk0My0xMi41MzYgMC0yMy43NTktNS4wNjktMzIuMzExLTEyLjk0My05LjUyNS04Ljc1Ny0xNS43MDItMjEuMDg4LTE1LjY3OS0zNS4wNDlsLjAyMy0xNTUuNjA3LTE1NS42MDkuMDIzYy0xMy45ODQgMC0yNi4yNy02LjE3Ny0zNS4wNDktMTUuNjgyLTcuODc1LTguNTUyLTEyLjk2Ni0xOS43NTMtMTIuOTQzLTMyLjMxMSAwLTEyLjUzOCA1LjA2OS0yMy43NTkgMTIuOTQzLTMyLjMxMyA4Ljc1NS05LjUyNSAyMS4wNjYtMTUuNjc5IDM1LjA0OS0xNS42NzlsMTU1LjYwNy0uMDIzVjI0NC40MjNjMC0xMy45ODQgNi4xNzktMjYuMjcyIDE1LjY4Mi0zNS4wNDkgOC41NTItNy44NzcgMTkuNzU1LTEyLjk2NiAzMi4zMTEtMTIuOTQzIDEyLjUzNiAwIDIzLjc1OSA1LjA2OSAzMi4zMTEgMTIuOTQzIDkuNTI1IDguNzU1IDE1LjY3OSAyMS4wNjYgMTUuNjc5IDM1LjA0OVY0MDAuMDFoMTU1LjYzMmMxMy45ODQgMCAyNi4yNyA2LjE3NyAzNS4wNDkgMTUuNjc5IDcuODc1IDguNTU0IDEyLjk2NiAxOS43NTUgMTIuOTQxIDMyLjMxMSAwIDEyLjUzNi01LjA2OSAyMy43NTktMTIuOTQxIDMyLjMxMS04Ljc1NSA5LjUyNS0yMS4wNjYgMTUuNjgyLTM1LjA0OSAxNS42ODJINTU5Ljk5VjY1MS41OGMuMDAyIDEzLjk4NC02LjE1MiAyNi4yOTItMTUuNyAzNS4wNzJ6TTE0OS45NjEgODEwLjAzOWMtMTk5LjkzNi0xOTkuOTM2LTE5OS45MzYtNTI0LjE0MSAwLTcyNC4wNzdzNTI0LjE0MS0xOTkuOTM2IDcyNC4wNzcgMCAxOTkuOTM2IDUyNC4xNDEgMCA3MjQuMDc3Yy0xOTkuOTM2IDE5OS45MzQtNTI0LjE0MSAxOTkuOTM0LTcyNC4wNzcgMHptNjU2LjE5NS02NTYuMTk1Yy0xNjIuMTkxLTE2Mi4xOTMtNDI2LjExOS0xNjIuMTkzLTU4OC4zMTMgMC0xNjIuMTkzIDE2Mi4xOTEtMTYyLjE5MyA0MjYuMTE5IDAgNTg4LjMxM3M0MjYuMTE5IDE2Mi4xOTMgNTg4LjMxMyAwYzE2Mi4xOTMtMTYyLjE5MyAxNjIuMTkzLTQyNi4xMjEgMC01ODguMzEzeiIvPjxnbHlwaCB1bmljb2RlPSLupLYiIGdseXBoLW5hbWU9Im1lZGlyLWFyZWEiIGQ9Ik05ODUuMTU5IDMxOC44NjZINDMuNzJWLTM0LjE3OGg5NDEuNDM5djM1My4wNDR6TTEwMi41NiAyNC42NjZ2MjM1LjM2aDg4LjI2di0xMTcuNjhoNTguODR2MTE3LjY4aDU4Ljg0di01OC44NGg1OC44NHY1OC44NGg1OC44NHYtMTE3LjY4aDU4Ljg0djExNy42OGg1OC44NHYtNTguODRoNTguODR2NTguODRoNTguODR2LTExNy42OGg1OC44NHYxMTcuNjhoNTguODR2LTU4Ljg0aDU4Ljg0djU4Ljg0aDg4LjI2M1YyNC42NjZIMTAyLjU1OHptMjkzLjMyIDM5OC4yMzVoLTI0LjI4NkwyMzMuMDkyIDY2Mi43OTggMzcxLjYgOTAyLjY5NWgyNzYuOTk5bDEzOC41MTQtMjM5Ljg5Ny0xMzguNTA4LTIzOS44OTdIMzk1Ljg4em0yMDQuMTU2IDg0LjEyMWw4OS45NCAxNTUuNzc2LTg5Ljk0IDE1NS43ODJINDIwLjE2bC04OS45NC0xNTUuNzgyIDg5Ljk0LTE1NS43NzZoMTc5Ljg3NnoiLz48Z2x5cGggdW5pY29kZT0i7qS3IiBnbHlwaC1uYW1lPSJtZWRpci1saW5lYSIgZD0iTTk4My45MDMgNjc5LjgzOGMuMDk5IDUzLjY4OC00My40MiA5Ny4yNy05Ny4xMTQgOTcuMzA2LTM5LjQ1NC4wNi03My4yNjMtMjMuNDk2LTg4LjU0OS01Ny4yNDJsLTU4NC4xOTIuMTg5Yy0xNS4yMTMgMzMuNzYxLTQ4Ljk4MyA1Ny4zOTItODguNDI1IDU3LjQzNC01My43MDYuMDU3LTk3LjI3Ni00My40Mi05Ny4zMy05Ny4xMDgtLjA1MS01My43MjEgNDMuNDItOTcuMjk3IDk3LjEyOS05Ny4zMjQgMzkuNDU3LS4wNjYgNzMuMjgxIDIzLjQ4NCA4OC41NjEgNTcuMjNsNTg0LjE5Mi0uMTg5YzE1LjIwNC0zMy43NjEgNDguOTY1LTU3LjM5MiA4OC40MjUtNTcuNDEzIDUzLjcwMy0uMDg3IDk3LjI2NyA0My40MTQgOTcuMzAzIDk3LjExN3ptMS4yNTYtMzYwLjk3Mkg0My43MlYtMzQuMTc1aDk0MS40Mzl2MzUzLjA0MXpNMTAyLjU2IDI0LjY2NnYyMzUuMzZoODguMjZ2LTExNy42OGg1OC44NHYxMTcuNjhoNTguODR2LTU4Ljg0aDU4Ljg0djU4Ljg0aDU4Ljg0di0xMTcuNjhoNTguODR2MTE3LjY4aDU4Ljg0di01OC44NGg1OC44NHY1OC44NGg1OC44NHYtMTE3LjY4aDU4Ljg0djExNy42OGg1OC44NHYtNTguODRoNTguODR2NTguODRoODguMjZWMjQuNjY2SDEwMi41NTh6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kuCIgZ2x5cGgtbmFtZT0ibWVub3MiIGQ9Ik04MjQgNDQ0SDE5NmMtNDAgMC03MCAzMC03MCA3MHMzMCA3MCA3MCA3MGg2MjhjNDAgMCA3MC0zMCA3MC03MHMtMzAtNzAtNzAtNzB6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kuSIgZ2x5cGgtbmFtZT0ibWVub3MyIiBkPSJNNTU5Ljk5MSA0MDAuMDA3aDE1NS42MzJjMTMuOTg0IDAgMjYuMjcgNi4xNzcgMzUuMDQ5IDE1LjY3OSA3Ljg3NSA4LjU1NCAxMi45NjYgMTkuNzU1IDEyLjk0MSAzMi4zMTEgMCAxMi41MzYtNS4wNjkgMjMuNzU5LTEyLjk0MSAzMi4zMTEtOC43NTUgOS41MjUtMjEuMDY2IDE1LjY4Mi0zNS4wNDkgMTUuNjgySDU1OS45OTF6bTguNDY0IDk1Ljk4NmwtMjYwLjA1Ny4wMjNjLTEzLjk4NCAwLTI2LjI3LTYuMTc3LTM1LjA0OS0xNS42ODItNy44NzUtOC41NTItMTIuOTY2LTE5Ljc1My0xMi45NDMtMzIuMzExIDAtMTIuNTM4IDUuMDY5LTIzLjc1OSAxMi45NDMtMzIuMzEzIDguNzU1LTkuNTI1IDIxLjA2Ni0xNS42NzkgMzUuMDQ5LTE1LjY3OWwyNjAuMDU3LS4wMjN6TTE0OS45NjEgODEwLjAzOWMtMTk5LjkzNi0xOTkuOTM2LTE5OS45MzYtNTI0LjE0MSAwLTcyNC4wNzdzNTI0LjE0MS0xOTkuOTM2IDcyNC4wNzcgMCAxOTkuOTM2IDUyNC4xNDEgMCA3MjQuMDc3Yy0xOTkuOTM2IDE5OS45MzQtNTI0LjE0MSAxOTkuOTM0LTcyNC4wNzcgMHptNjU2LjE5NS02NTYuMTk1Yy0xNjIuMTkxLTE2Mi4xOTMtNDI2LjExOS0xNjIuMTkzLTU4OC4zMTMgMC0xNjIuMTkzIDE2Mi4xOTEtMTYyLjE5MyA0MjYuMTE5IDAgNTg4LjMxM3M0MjYuMTE5IDE2Mi4xOTMgNTg4LjMxMyAwYzE2Mi4xOTMtMTYyLjE5MyAxNjIuMTkzLTQyNi4xMjEgMC01ODguMzEzeiIvPjxnbHlwaCB1bmljb2RlPSLupLoiIGdseXBoLW5hbWU9Im1lbnUiIGQ9Ik0xNTYgNzYwYy00MCAwLTcwIDMwLTcwIDcwczMwIDcyIDcwIDcyaDcwNmM0MCAwIDcyLTMyIDcyLTcycy0zMi03MC03Mi03MEgxNTZ6bTcwNi0xNzRjNDAgMCA3Mi0zMiA3Mi03MnMtMzItNzAtNzItNzBIMTU2Yy00MCAwLTcwIDMwLTcwIDcwczMwIDcyIDcwIDcyaDcwNnptMC0zMThjNDAgMCA3Mi0zMCA3Mi03MHMtMzItNzItNzItNzJIMTU2Yy00MCAwLTcwIDMyLTcwIDcyczMwIDcwIDcwIDcwaDcwNnoiLz48Z2x5cGggdW5pY29kZT0i7qS7IiBnbHlwaC1uYW1lPSJtdW5kbyIgZD0iTTUxMiA5MjUuOTk4Yy0yNjMuNjEyLS4wMjItNDc3Ljk3OC0yMTQuMzg0LTQ3OC00NzggLjAyMi0yNjMuNjAyIDIxNC4zOTQtNDc3Ljk2OCA0NzgtNDc4IDI2My42MTQuMDMyIDQ3Ny45NzIgMjE0LjM5OCA0NzguMDAyIDQ3OC0uMDMgMjYzLjYxMi0yMTQuMzk0IDQ3Ny45NzYtNDc4LjAwMiA0Nzh6bS0xNS45NS04MzguOTZjLTkuMTM4IDUuMzA4LTE5LjczNiAxNS41OC0zMC4xMDQgMzAuNDUtMTAuNDAyIDE0Ljg1Mi0yMC42MzggMzQuMTgtMjkuODggNTcuMjE0LTI0LjczOCA2MS41MTYtNDAuMjYgMTQyLjIwOC00NC4wODQgMjI5Ljg0MmgyNDAuMDQ0Yy0zLjgyNi04Ny42MzItMTkuMzQ2LTE2OC4zMjYtNDQuMDktMjI5Ljg0Mi0xMi4zMS0zMC43MDgtMjYuNDYtNTQuODQtNDAuMjY4LTcwLjUzOC02Ljg4Mi03Ljg1OC0xMy42NDYtMTMuNTY4LTE5LjcyOC0xNy4xMjYtNi4xMTgtMy41NzItMTEuMzc4LTQuOTg0LTE1Ljk0Mi00Ljk4NC00LjU2NiAwLTkuODI2IDEuNDEyLTE1Ljk0OCA0Ljk4NHpNMzA1LjAxMiA0MDQuNTVjMy45OTQtOTguMjMgMjEuMzQtMTg5Ljc4MiA1MC40MDItMjYyLjIyOCA5LjkyNi0yNC42ODQgMjEuMDE4LTQ2LjU1NiAzMy4yMzYtNjUuNDQ4LTE0Mi4xMyA0Ny4zNTQtMjQ4LjMyOCAxNzQuMzItMjY1LjMzMiAzMjcuNjc2aDE4MS42OTR6bS0xODEuNjk2IDg2LjkxMmMxNy4wMDQgMTUzLjM1NCAxMjMuMTk4IDI4MC4zMjIgMjY1LjMzIDMyNy42NzgtMTIuMjE4LTE4Ljg5OC0yMy4zMTYtNDAuNzY2LTMzLjIzOC02NS40NDgtMjkuMDYyLTcyLjQ0NC00Ni40MDQtMTY0LTUwLjQwMi0yNjIuMjMydi4wMDJoLTE4MS42OXptNTk1LjY2Ni0uMDA4Yy0zLjk4NCA5OC4yMzYtMjEuMzM2IDE4OS43OTItNTAuMzk4IDI2Mi4yMzgtOS45MiAyNC42OC0yMS4wMTQgNDYuNTQ2LTMzLjIzIDY1LjQ0MiAxNDIuMTM4LTQ3LjM1NiAyNDguMzIyLTE3NC4zMjQgMjY1LjMzMi0zMjcuNjc4SDcxOC45ODJ6bS04Ni45NjItLjAwMkgzOTEuOTcyYzMuODI0IDg3LjYzOCAxOS4zNCAxNjguMzI0IDQ0LjA4NCAyMjkuODQ4IDEyLjMwNCAzMC43MDggMjYuNDYyIDU0Ljg0MiA0MC4yNjggNzAuNTMyIDYuODc4IDcuODY0IDEzLjYzOCAxMy41NzYgMTkuNzIyIDE3LjEyOCA2LjEyNiAzLjU3NCAxMS4zODYgNC45ODQgMTUuOTQ4IDQuOTkgNC41NjItLjAwNCA5LjgzLTEuNDE2IDE1Ljk0NC00Ljk5IDkuMTQ4LTUuMzA4IDE5Ljc0LTE1LjU3OCAzMC4xMS0zMC40NDggMTAuMzk4LTE0Ljg0MiAyMC42MzYtMzQuMTc2IDI5Ljg4LTU3LjIwOCAyNC43NS02MS41MjggNDAuMjY0LTE0Mi4yMTYgNDQuMDkyLTIyOS44NTJ6bTMuMzQyLTQxNC41ODJjMTIuMjE4IDE4Ljg5NCAyMy4zMSA0MC43NjYgMzMuMjI2IDY1LjQ0NiAyOS4wNjYgNzIuNDQ4IDQ2LjQwOCAxNjMuOTkyIDUwLjQwMiAyNjIuMjIyaDE4MS42OThDODgzLjY4MiAyNTEuMjA0IDc3Ny40NzggMTI0LjI0IDYzNS4zNjIgNzYuODd6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kvCIgZ2x5cGgtbmFtZT0ibXVuZG8yIiBkPSJNMTAyNCA0NTIuOUMxMDIxLjU0OSA3MzIuNzg0IDc5My4xMDkgOTYwIDUxMS45OTkgOTYwIDIzMS41MDMgOTYwIDIuNDUxIDczMi43ODUgMCA0NTIuMjg3di00Ljg5Ny0zLjY3NEMyLjQ1MSAxNjMuMjE4IDIzMC44ODktNjMuOTk3IDUxMS45OTktNjMuOTk3YzI4MC40OTggMCA1MDkuNTUgMjI3LjIxNSA1MTEuOTk5IDUwNy4xdjQuMjg4Yy4wMDIgMS4yMjMuMDAyIDQuMjg2LjAwMiA1LjUxMXpNMzMxLjMzIDg0Ny45MjRjLTQwLjQyMi01OC43OTQtNzEuNjU1LTEzNy4xODctODguODAzLTIyNy44MjctMjcuNTU5LTYuMTI1LTUzLjg5NC0xMy40NzUtNzguMzkzLTIyLjA0OC0yOS4zOTgtMTAuNDEyLTU0LjUwOC0yMC44MjMtNzQuNzE3LTMxLjg0NyAzNS41MiAxMjUuNTQ5IDEyNC45MzcgMjI4LjQzOSAyNDEuOTEzIDI4MS43MjF6TTczLjQ5NCA0NDguNjEzYzAgMjAuMjExIDM1LjUyIDUyLjY2OSAxMTQuNTI3IDc5LjYxNiAxMy40NzUgNC44OTkgMjguMTczIDkuMTg3IDQyLjg3IDEyLjg2MS0zLjA2Mi0zMC4wMS00LjI4OC02MS4yNDQtNC4yODgtOTMuMDkxczEuODM3LTYzLjA4MSA0LjI4OC05My4wOTFjLTE1LjMxMiA0LjI4OC0yOS4zOTggOC41NzMtNDIuODcgMTIuODYxLTc5LjAwNyAyOC4xNzUtMTE0LjUyNyA2MC42MzMtMTE0LjUyNyA4MC44NDR6bTE2LjUzNS0xMTcuNTg4YzIwLjIxMS0xMS4wMjQgNDQuNzA3LTIyLjA0OCA3NC43MTctMzEuODQ3IDIzLjg4NS03Ljk2MiA1MC4yMi0xNS4zMTIgNzguMzkzLTIyLjA0OCAxNy43Ni05MC42NCA0OC4zODMtMTY5LjY0NSA4OS40MTctMjI3LjgyNy0xMTguMjAxIDUzLjI4MS0yMDcuNjE4IDE1Ni4xNy0yNDIuNTI3IDI4MS43MjF6bTM4NS4yMjQtMzEzLjU3QzQzNi42NyAzMi43NjcgMzk4LjY5OSA3MS45NjMgMzY4LjY5IDEyOS41MzFjLTIwLjIxMSAzOS4xOTctMzYuNzQ2IDgzLjkwNC00Ny43NyAxMzMuNTEzIDQ4Ljk5NS03LjM1IDEwMS4wNTMtMTEuNjM2IDE1NC45NDctMTIuODYxVjE3LjQ1N2gtLjYxNHptMCAzMDYuMjJjLTU5LjQwNyAxLjgzNy0xMTYuMzY0IDYuNzM2LTE2OC40MjIgMTUuOTIzLTQuMjg4IDM1LjUyMy02LjczNiA3MS42NTUtNi43MzYgMTA5LjAxNHMyLjQ1MSA3NC4xMDUgNi43MzYgMTA5LjAxNGM1Mi4wNTcgOC41NzMgMTA5LjAxNCAxNC4wODYgMTY4LjQyMiAxNS45MjNWMzIzLjY3NHptMCAzMjMuMzY5Yy01My44OTQtMS4yMjUtMTA1Ljk1Mi01LjUxMS0xNTQuOTQ3LTEyLjg2MSAxMS42MzYgNDguOTk1IDI3LjU1OSA5NC4zMTYgNDcuNzcgMTMzLjUxMyAzMC4wMSA1Ny41NjggNjcuOTgxIDk2Ljc2NSAxMDYuNTYzIDExMi4wNzZWNjQ3LjA0NmguNjE0em00NTguNzE2LTgwLjg0MmMtMjAuMjExIDExLjAyNC00NC43MDcgMjIuMDQ4LTc0LjcxNyAzMS44NDctMjMuODg1IDcuOTYyLTUwLjIyIDE1LjMxMi03OC4zOTMgMjIuMDQ4LTE3Ljc2IDkwLjY0LTQ4LjM4MyAxNjkuNjQ1LTg5LjQxNyAyMjcuODI3IDExOC4yMDMtNTMuMjgzIDIwNy42MTgtMTU2LjE3MiAyNDIuNTI3LTI4MS43MjF6TTU0OC43NDcgODc5Ljc3YzM4LjU4My0xNS4zMTIgNzYuNTU0LTU0LjUwOCAxMDYuNTYzLTExMi4wNzYgMjAuMjExLTM5LjE5NyAzNi43NDYtODMuOTA0IDQ3Ljc3LTEzMy41MTMtNDguOTk1IDcuMzUtMTAxLjA1MyAxMS42MzYtMTU0Ljk0NyAxMi44NjFWODc5Ljc3aC42MTR6bTAtMzA2LjIyYzU5LjQwNy0xLjgzNyAxMTYuMzY0LTYuNzM2IDE2OC40MjItMTUuOTIzIDQuMjg4LTM1LjUyMyA2LjczNi03MS42NTUgNi43MzYtMTA5LjAxNHMtMi40NTEtNzQuMTA1LTYuNzM2LTEwOS4wMTRjLTUyLjA1Ny04LjU3My0xMDkuMDE0LTE0LjA4Ni0xNjguNDIyLTE1LjkyM3YyNDkuODc1em0wLTU1Ni4wOTV2MjMyLjcyNmM1My44OTQgMS4yMjUgMTA1Ljk1MiA1LjUxMSAxNTQuOTQ3IDEyLjg2MS0xMS42MzYtNDguOTk1LTI3LjU1OS05NC4zMTYtNDcuNzctMTMzLjUxMy0zMC42MjMtNTcuNTY2LTY4LjU5NC05Ni43NjMtMTA3LjE3Ny0xMTIuMDc0ek02OTIuNjcgNDkuMzAyYzQwLjQyMiA1OC43OTQgNzEuNjU1IDEzNy4xODcgODkuNDE3IDIyNy44MjcgMjcuNTU5IDYuMTI1IDUzLjg5NCAxMy40NzUgNzguMzkzIDIyLjA0OCAyOS4zOTggMTAuNDEyIDU0LjUwOCAyMC44MjMgNzQuNzE3IDMxLjg0N0M4OTkuMDYxIDIwNS40NzUgODA5LjY0NiAxMDIuNTg1IDY5Mi42NyA0OS4zMDN6bTE0My4zMDkgMzE5LjY5NGMtMTMuNDc1LTQuODk5LTI4LjE3My05LjE4Ny00Mi44Ny0xMi44NjEgMy4wNjIgMzAuMDEgNC4yODggNjEuMjQ0IDQuMjg4IDkzLjA5MXMtMS44MzcgNjMuMDgxLTQuMjg4IDkzLjA5MWMxNS4zMTItNC4yODggMjkuMzk4LTguNTczIDQyLjg3LTEyLjg2MSA3OS4wMDUtMjYuOTQ3IDExNC41MjctNTkuNDA3IDExNC41MjctNzkuNjE2IDAtMjAuMjEzLTM1LjUyMy01My44OTctMTE0LjUyNy04MC44NDR6Ii8+PGdseXBoIHVuaWNvZGU9Iu6kvSIgZ2x5cGgtbmFtZT0ib3BjaW9uZXMiIGQ9Ik0yMTcuMjEyIDc1MS42OTR2ODQuMTg1YzAgMjUuNzI0LTIwLjgyMSA0Ni41NDUtNDYuNTQ1IDQ2LjU0NXMtNDYuNTQ1LTIwLjgyMS00Ni41NDUtNDYuNTQ1di04NC4xODVDNTIuNTk3IDczMS4zNjkuMDAxIDY2NS41ODUuMDAxIDU4Ny42MzdTNTIuNTk3IDQ0My45MDUgMTI0LjEyMiA0MjMuNThWNjAuMTIyYzAtMjUuNjkzIDIwLjgyMS00Ni41NDUgNDYuNTQ1LTQ2LjU0NXM0Ni41NDUgMjAuODUyIDQ2LjU0NSA0Ni41NDVWNDIzLjU4YzcxLjUyNSAyMC4zMjUgMTI0LjEyMSA4Ni4wNzggMTI0LjEyMSAxNjQuMDU3IDAgNzcuOTQ4LTUyLjU5NiAxNDMuNzMyLTEyNC4xMjEgMTY0LjA1N3ptLTQ2LjU0NS0yNDEuNjMzYy00Mi43NiAwLTc3LjU3NiAzNC44MTYtNzcuNTc2IDc3LjU3NnMzNC44MTYgNzcuNTc2IDc3LjU3NiA3Ny41NzZjNDIuNzYgMCA3Ny41NzYtMzQuODE2IDc3LjU3Ni03Ny41NzZzLTM0LjgxNi03Ny41NzYtNzcuNTc2LTc3LjU3NnptMzg3Ljg3OC0zNy42NHYzNjMuNDU4YzAgMjUuNzI0LTIwLjgyMSA0Ni41NDUtNDYuNTQ1IDQ2LjU0NXMtNDYuNTQ1LTIwLjgyMS00Ni41NDUtNDYuNTQ1VjQ3Mi40MjFjLTcxLjUyNS0yMC4zMjUtMTI0LjEyMS04Ni4xMDktMTI0LjEyMS0xNjQuMDU3czUyLjU5Ni0xNDMuNzMyIDEyNC4xMjEtMTY0LjA1N1Y2MC4xMjJjMC0yNS42OTMgMjAuODIxLTQ2LjU0NSA0Ni41NDUtNDYuNTQ1czQ2LjU0NSAyMC44NTIgNDYuNTQ1IDQ2LjU0NXY4NC4xODVjNzEuNTI1IDIwLjMyNSAxMjQuMTIxIDg2LjEwOSAxMjQuMTIxIDE2NC4wNTdTNjMwLjA3IDQ1Mi4wOTYgNTU4LjU0NSA0NzIuNDIxek01MTIgMjMwLjc4OGMtNDIuNzYgMC03Ny41NzYgMzQuNzg1LTc3LjU3NiA3Ny41NzZTNDY5LjI0IDM4NS45NCA1MTIgMzg1Ljk0czc3LjU3Ni0zNC43ODUgNzcuNTc2LTc3LjU3NlM1NTQuNzYgMjMwLjc4OCA1MTIgMjMwLjc4OHptMzg3Ljg3OSA1MjAuOTA2djg0LjE4NWMwIDI1LjcyNC0yMC44MjEgNDYuNTQ1LTQ2LjU0NSA0Ni41NDVzLTQ2LjU0NS0yMC44MjEtNDYuNTQ1LTQ2LjU0NXYtODQuMTg1Yy03MS41MjUtMjAuMzI1LTEyNC4xMjEtODYuMDc4LTEyNC4xMjEtMTY0LjA1NyAwLTc3Ljk0OCA1Mi41OTYtMTQzLjczMiAxMjQuMTIxLTE2NC4wNTdWNjAuMTIyYzAtMjUuNjkzIDIwLjgyMS00Ni41NDUgNDYuNTQ1LTQ2LjU0NXM0Ni41NDUgMjAuODUyIDQ2LjU0NSA0Ni41NDVWNDIzLjU4Qzk3MS40MDQgNDQzLjkwNSAxMDI0IDUwOS42NTggMTAyNCA1ODcuNjM3YzAgNzcuOTQ4LTUyLjU5NiAxNDMuNzMyLTEyNC4xMjEgMTY0LjA1N3ptLTQ2LjU0Ni0yNDEuNjMzYy00Mi43NiAwLTc3LjU3NiAzNC44MTYtNzcuNTc2IDc3LjU3NnMzNC44MTYgNzcuNTc2IDc3LjU3NiA3Ny41NzZjNDIuNzYgMCA3Ny41NzYtMzQuODE2IDc3LjU3Ni03Ny41NzZzLTM0LjgxNi03Ny41NzYtNzcuNTc2LTc3LjU3NnoiLz48Z2x5cGggdW5pY29kZT0i7qS+IiBnbHlwaC1uYW1lPSJwYXBlbGVyYSIgZD0iTTkxMS4yODggODAwSDcwNC41Njd2OTZjMCAzNS4zMjgtMjguNjcyIDY0LTY0IDY0SDM4NC41NjljLTM1LjMyOCAwLTY0LTI4LjY3Mi02NC02NHYtOTZIMTEzLjg1Yy0yNi40OTcgMC00OC4wMDEtMjEuNDcxLTQ4LjAwMS00OC4wMDFTODcuMzUzIDcwNCAxMTMuODUgNzA0aDQ2LjcyMVYwYzAtMzUuMzYxIDI4LjY3Mi02NCA2NC02NGg1NzUuOTk4YzM1LjMyOCAwIDY0IDI4LjY3MiA2NCA2NHY3MDRoNDYuNzIxYzI2LjQ5NyAwIDQ4LjAwMSAyMS40NzEgNDguMDAxIDQ4LjAwMVM5MzcuNzgzIDgwMCA5MTEuMjg4IDgwMHptLTQ5NC43MTkgNjRoMTkxLjk5OHYtNjRINDE2LjU2OXY2NHpNNzY4LjU2NyAzMkgyNTYuNTY5djY3Mmg1MTEuOTk4VjMyem0tMjk2LjA1IDE0Ni4xMTl2MzU5LjMwN2MwIDIyLjg4NiAxNy4xNjQgNDAuMDUxIDQwLjA1MSA0MC4wNTEgMjIuODg4IDAgNDAuMDUzLTE3LjE2NCA0MC4wNTMtNDAuMDUxVjE3OC4xMTljMC0yMi44ODYtMTcuMTY0LTQwLjA1MS00MC4wNTMtNDAuMDUxLTIyLjg4Ni4wMDItNDAuMDUxIDE3LjE2Ni00MC4wNTEgNDAuMDUxem0xNTcuNjk2IDB2MzU5LjMwN2MwIDIyLjg4NiAxNy4xNjQgNDAuMDUxIDQwLjA1MSA0MC4wNTFzNDAuMDUzLTE3LjE2NCA0MC4wNTMtNDAuMDUxVjE3OC4xMTljMC0yMi44ODYtMTcuMTY0LTQwLjA1MS00MC4wNTMtNDAuMDUxLTIyLjg4Ni4wMDItNDAuMDUxIDE3LjE2Ni00MC4wNTEgNDAuMDUxem0tMzE1LjM5MiAwdjM1OS4zMDdjMCAyMi44ODYgMTcuMTY0IDQwLjA1MSA0MC4wNTEgNDAuMDUxczQwLjA1My0xNy4xNjQgNDAuMDUzLTQwLjA1MVYxNzguMTE5YzAtMjIuODg2LTE3LjE2NC00MC4wNTEtNDAuMDUzLTQwLjA1MS0yMi44ODYuMDAyLTQwLjA1MSAxNy4xNjYtNDAuMDUxIDQwLjA1MXoiLz48Z2x5cGggdW5pY29kZT0i7qS/IiBnbHlwaC1uYW1lPSJwaW4iIGQ9Ik00ODguNTQ0LTQyLjY3NGMtNi43NjIgMi4yMzItMTIuODIgNS4wMjgtMTguNzI1IDguMTk2LTExLjc0OSA2LjM1OS0yMi45OTcgMTQuMzA3LTM0LjgyNiAyMy43ODgtMjMuNTA1IDE4LjkzMi00OS4wOTEgNDQuMTQzLTc2LjA0MiA3NC4yMTctNTMuNzM3IDYwLjEwNy0xMTIuMzMxIDEzOS4zODctMTU5LjI2MyAyMjIuMDU2LTMxLjI0MiA1NS4xNzEtNTcuMzI4IDExMS42ODQtNzIuNzM3IDE2Ni4xODUtOC43NjMgMzEuMTgzLTE0LjA5NiA2MS43OTItMTQuMTI1IDkxLjcwMy0uMDE2IDEwOS45ODIgNDQuODQ3IDIxMC4wMzMgMTE3LjAzMyAyODIuMTQ1IDcyLjExIDcyLjE4NiAxNzIuMTYxIDExNy4wNDkgMjgyLjE0MyAxMTcuMDMzIDEwOS45NzYuMDE2IDIxMC4wMjQtNDQuODQ3IDI4Mi4xMzktMTE3LjAzMyA3Mi4xOC03Mi4xMTIgMTE3LjA0OS0xNzIuMTYzIDExNy4wMzMtMjgyLjE0NS0uMDU5LTM2LjgwMy04LjA1My03NC42NzYtMjAuNzUyLTExMy4zNC0xMi43NTctMzguNjM2LTMwLjQxNy03OC4wNjYtNTEuMDczLTExNy4xMjEtNDEuMzQxLTc4LjA1My05NC42NjctMTU0LjYwNC0xNDYuMTE3LTIxNi43MjMtMzQuMzg2LTQxLjQzNy02Ny42NzgtNzYuMjktOTcuNDQ2LTEwMS4zOTZDNTc4LjU2NC0xOS40NyA1NjMtMzAuNzcyIDU0NS41NzktMzguNzMxYy05LjQzNS00LjEtMTkuNjM2LTcuNzU0LTMzLjU3OS03LjkyMi05LjE1Ny4wNDMtMTYuNjkxIDEuNzktMjMuNDU2IDMuOTc5ek0yOTMuNTc3IDc2MS45MDFjLTU2LjA2Ni01Ni4xMzItOTAuNjI0LTEzMy4xNC05MC42NDItMjE4LjQyOS0uMDUxLTIyLjE3NCA0Ljk4MS01MC4wNDEgMTQuNzYyLTgwLjYzNCA5LjczNi0zMC42MTQgMjQuMDQ4LTYzLjk0NSA0MS40MzctOTcuNzg4IDM0Ljc0OC02Ny43MjkgODEuNzczLTEzNy40NjYgMTI3LjY2Ni0xOTQuODYxIDMwLjU1Mi0zOC4yNjcgNjAuNzIxLTcxLjE2NCA4NS42MjctOTQuMTQgMTQuMTQ4LTEzLjExMSAyNi43MjItMjIuOTcyIDM1LjMxOC0yOC4zNjFhNzQuNzkzIDc0Ljc5MyAwIDAxNC4yNTgtMi41MzFjNC43MjUgMi41OTUgMTIuMDU5IDcuNTM1IDIwLjU0MyAxNC4zODUgMTcuODA1IDE0LjI3NSA0MC44MzMgMzYuNjQ5IDY1LjM1NCA2NC4wOCA0OS4xOTMgNTQuOTA5IDEwNC45MTkgMTMwLjMzMyAxNDguMDI1IDIwNi40MTggMjguNzg1IDUwLjY3IDUxLjkyOSAxMDEuNzk4IDY0LjM5MSAxNDYuMTc0IDcuMTYgMjUuMzIxIDEwLjc3NSA0OC4zNTkgMTAuNzQ0IDY3LjI1Ni0uMDE4IDg1LjI4OS0zNC41NzYgMTYyLjI5OC05MC42NDIgMjE4LjQyMy01Ni4xMjUgNTYuMDY2LTEzMy4xMzQgOTAuNjI0LTIxOC40MTcgOTAuNjQyLTg1LjI4Ny0uMDE2LTE2Mi4yOTYtMzQuNTc0LTIxOC40MjMtOTAuNjM0em0yMTguNDI1LTQ1NC41MTljLTY1LjAxOC0uMDE4LTEyNC4yOTcgMjYuNTYzLTE2Ni44ODMgNjkuMjE2LTQyLjY1IDQyLjU4Mi02OS4yMzMgMTAxLjg2My02OS4yMTIgMTY2Ljg3OS0uMDIgNjUuMDE2IDI2LjU2MyAxMjQuMjk3IDY5LjIxMiAxNjYuODgzIDQyLjU4NiA0Mi42NTIgMTAxLjg2OCA2OS4yMzEgMTY2Ljg4MyA2OS4yMTJWNjg5LjQ2Yy00MC4zMjMtLjAxOC03Ni41NjItMTYuMjktMTAzLjE2NC00Mi44Mi0yNi41MzItMjYuNTk5LTQyLjgwMS02Mi44NDEtNDIuODItMTAzLjE2NC4wMTYtNDAuMzIzIDE2LjI4OC03Ni41NjIgNDIuODItMTAzLjE2IDI2LjYwMS0yNi41MzYgNjIuODQxLTQyLjgwMSAxMDMuMTY0LTQyLjgyIDQwLjMxOS4wMTggNzYuNTU4IDE2LjI4NCAxMDMuMTU4IDQyLjgyIDI2LjUzMiAyNi41OTUgNDIuODAxIDYyLjgzNyA0Mi44MiAxMDMuMTYtLjAxOCA0MC4zMjMtMTYuMjg4IDc2LjU2Mi00Mi44MiAxMDMuMTY0LTI2LjU5OSAyNi41MzItNjIuODQxIDQyLjgwMS0xMDMuMTU4IDQyLjgydjkwLjExMmM2NS4wMTIuMDE4IDEyNC4yOTEtMjYuNTYxIDE2Ni44NzctNjkuMjEyIDQyLjY1LTQyLjU4NCA2OS4yMzEtMTAxLjg2OCA2OS4yMTItMTY2Ljg4My4wMTgtNjUuMDE2LTI2LjU2My0xMjQuMjkzLTY5LjIxMi0xNjYuODc5LTQyLjU3Mi00Mi42NDEtMTAxLjgyNy02OS4yMTgtMTY2LjgxNi02OS4yMTZoLS4wNjF6Ii8+PGdseXBoIHVuaWNvZGU9Iu6lgCIgZ2x5cGgtbmFtZT0icGluLW51ZXZvIiBkPSJNNjc4Ljg3OSA3MTAuMzYxYy00Mi41ODYgNDIuNjUyLTEwMS44NjUgNjkuMjMxLTE2Ni44NzcgNjkuMjEyLTY1LjAxNi4wMTgtMTI0LjI5NS0yNi41NjEtMTY2Ljg4MS02OS4yMTItNDIuNjUtNDIuNTg2LTY5LjIzMS0xMDEuODY4LTY5LjIxMi0xNjYuODgzLS4wMTgtNjUuMDE2IDI2LjU2My0xMjQuMjk1IDY5LjIxNi0xNjYuODc3IDQyLjU4Mi00Mi42NTQgMTAxLjg1OS02OS4yMzcgMTY2Ljg3Ny02OS4yMThoLjA2MWM2NC45ODktLjAwMiAxMjQuMjQ4IDI2LjU3NyAxNjYuODE2IDY5LjIxOCA0Mi42NSA0Mi41ODYgNjkuMjMxIDEwMS44NjEgNjkuMjEyIDE2Ni44NzcuMDE4IDY1LjAxNi0yNi41NjMgMTI0LjI5OS02OS4yMTIgMTY2Ljg4M3pNNjE1LjE2IDQ0MC4zMThjLTI2LjU5OS0yNi41MzYtNjIuODM3LTQyLjc5OS0xMDMuMTU4LTQyLjgyLTQwLjMyMS4wMi03Ni41NjIgMTYuMjg0LTEwMy4xNjQgNDIuODItMjYuNTMyIDI2LjYwMS00Mi44MDEgNjIuODM5LTQyLjgxOCAxMDMuMTYuMDE4IDQwLjMyMyAxNi4yODYgNzYuNTY0IDQyLjgxOCAxMDMuMTY0IDI2LjYwMSAyNi41MyA2Mi44NDMgNDIuODAxIDEwMy4xNjQgNDIuODIgNDAuMzE5LS4wMTggNzYuNTU4LTE2LjI4OCAxMDMuMTU4LTQyLjgyIDI2LjUzMi0yNi42MDEgNDIuODAxLTYyLjg0MSA0Mi44Mi0xMDMuMTY0LS4wMTgtNDAuMzIzLTE2LjI4OC03Ni41Ni00Mi44Mi0xMDMuMTZ6TTgzNiAzMDYuNzk3YzEuMTE2IDIuMDczIDIuMjU3IDQuMTM5IDMuMzU1IDYuMjEyIDIwLjY1NiAzOS4wNTUgMzguMzE2IDc4LjQ4MSA1MS4wNzMgMTE3LjEyMSAxMi43IDM4LjY2NCAyMC42OTMgNzYuNTM4IDIwLjc1MiAxMTMuMzQuMDE4IDEwOS45NzgtNDQuODQ3IDIxMC4wMjktMTE3LjAzMyAyODIuMTQ1LTcyLjExNCA3Mi4xODQtMTcyLjE2NyAxMTcuMDUxLTI4Mi4xNDMgMTE3LjAzNS0xMDkuOTgyLjAxNi0yMTAuMDMzLTQ0Ljg1MS0yODIuMTQ1LTExNy4wMzUtNzIuMTg2LTcyLjExNi0xMTcuMDQ5LTE3Mi4xNjEtMTE3LjAzNS0yODIuMTQ1LjAzMS0yOS45MTcgNS4zNjItNjAuNTIgMTQuMTI1LTkxLjcwMyAxNS40MDktNTQuNTAzIDQxLjQ5NS0xMTEuMDE0IDcyLjczNy0xNjYuMTg1IDQ2LjkzMi04Mi42NyAxMDUuNTI1LTE2MS45NSAxNTkuMjY1LTIyMi4wNTYgMjYuOTUyLTMwLjA3NyA1Mi41MzUtNTUuMjg2IDc2LjA0Mi03NC4yMTcgMTEuODI3LTkuNDggMjMuMDc3LTE3LjQyOCAzNC44MjYtMjMuNzg4IDUuOTA0LTMuMTcyIDExLjk2Mi01Ljk2MiAxOC43MjUtOC4xOTYgNi43NjctMi4xODcgMTQuMjk5LTMuOTM2IDIzLjQ2LTMuOTc3IDEzLjk0NS4xNjggMjQuMTQ0IDMuODIyIDMzLjU3OSA3LjkyMiAxNy40MiA3Ljk1OSAzMi45ODMgMTkuMjU5IDUwLjIwNyAzMy42MjIgMjEuMDA0IDE3LjcxMyA0My43NjYgNDAuMjk4IDY3LjQyNCA2Ni42MDVDNjg5LjExNS02LjkxNiA3NTUuMjM1LTU1LjU3MSA4MzIuNzI3LTU1LjU3MWMxMDAuMDY1IDAgMTgxLjIwMyA4MS4xMzYgMTgxLjIwMyAxODEuMjA1LS4wMDIgOTguOTc4LTc5LjM2MiAxNzkuNDE3LTE3Ny45MyAxODEuMTY0ek01OTcuODk5IDEyMy42MjFjLTI0LjUyMS0yNy40MzEtNDcuNTQ4LTQ5LjgwMy02NS4zNTQtNjQuMDgtOC40ODUtNi44NTEtMTUuODE5LTExLjc5LTIwLjU0My0xNC4zODNhNzcuMjAyIDc3LjIwMiAwIDAwLTQuMjU4IDIuNTI5Yy04LjU5MyA1LjM4OC0yMS4xNyAxNS4yNDktMzUuMzE2IDI4LjM2My0yNC45MDYgMjIuOTc3LTU1LjA3NyA1NS44NzEtODUuNjI5IDk0LjEzNC00NS44OTQgNTcuMzk5LTkyLjkxOCAxMjcuMTM4LTEyNy42NjYgMTk0Ljg2NS0xNy4zOSAzMy44MzktMzEuNzAxIDY3LjE3NC00MS40MzcgOTcuNzg4LTkuNzc5IDMwLjU5My0xNC44MTEgNTguNDU0LTE0Ljc2MiA4MC42MzQuMDIgODUuMjkxIDM0LjU3OCAxNjIuMjk0IDkwLjY0NCAyMTguNDIzIDU2LjEyNSA1Ni4wNjIgMTMzLjEzNCA5MC42MjQgMjE4LjQyMSA5MC42NCA4NS4yODUtLjAxOCAxNjIuMjkyLTM0LjU4IDIxOC40MTctOTAuNjQyIDU2LjA2Ni01Ni4xMyA5MC42MjQtMTMzLjEzOCA5MC42NDItMjE4LjQyMy4wMzMtMTguODk3LTMuNTg0LTQxLjkzNS0xMC43NDQtNjcuMjU2LTEyLjQ2Mi00NC4zOC0zNS42MDctOTUuNTA4LTY0LjM4OS0xNDYuMTc0LTQzLjEwNi03Ni4wODUtOTguODMyLTE1MS41MDktMTQ4LjAyNy0yMDYuNDE4em0zMDcuOTU0LTI5LjUxM2gtNDEuODAyVjUyLjQwM2MwLTE3LjQwNC0xMy45MTQtMzEuNTE3LTMxLjMxOC0zMS41MTctMTcuMzk4IDAtMzEuMzE2IDE0LjExMy0zMS4zMTYgMzEuNTE3djQxLjcyMmgtNDEuNzg1Yy0xNy40MDQgMC0zMS41ODggMTQuMTExLTMxLjU4OCAzMS41MjMgMCAxNy40MDQgMTQuMTYgMzEuNTEzIDMxLjU2NiAzMS41MTNoNDEuODA4djQxLjcwMWMwIDE3LjQxMiAxMy45MTggMzEuNTIxIDMxLjMxNiAzMS41MjEgMTcuNDEgMCAzMS4zMTgtMTQuMTA5IDMxLjMxOC0zMS41MjF2LTQxLjcxNmg0MS44MDJjMTcuNDA0IDAgMzEuNTI3LTE0LjEyMSAzMS41MjctMzEuNTI1cy0xNC4xMjMtMzEuNTEzLTMxLjUyNy0zMS41MTN6Ii8+PGdseXBoIHVuaWNvZGU9Iu6lgSIgZ2x5cGgtbmFtZT0icGluMiIgZD0iTTUxMS45OTcgOTMzLjJjLTE0NS4wMjEgMC0yNjIuNjMzLTExNy42MTUtMjYyLjYzMy0yNjIuNjM5IDAtMTMyLjE5NCA5OC4wMTItMjQwLjUwNSAyMjUuMTExLTI1OC44MjNWLTQyLjMxM2g3NS4wNDJ2NDU0LjA0OWMxMjcuMDY2IDE4LjMxOCAyMjUuMTI0IDEyNi42MjkgMjI1LjEyNCAyNTguODIzIDAgMTQ1LjAyNS0xMTcuNjIyIDI2Mi42NDEtMjYyLjY0NSAyNjIuNjQxem0tNzUuMDQyLTIyNS4xMmMtNDEuNDc2IDAtNzUuMDM0IDMzLjU2Ni03NS4wMzQgNzUuMDQyczMzLjU1OCA3NS4wMzYgNzUuMDM0IDc1LjAzNmM0MS40ODIgMCA3NS4wNDItMzMuNTYgNzUuMDQyLTc1LjAzNnMtMzMuNTYtNzUuMDQyLTc1LjA0Mi03NS4wNDJ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6lgiIgZ2x5cGgtbmFtZT0icGluMyIgZD0iTTUxMi4wMDQgOTYwYy0yMjUuNjQyIDAtNDA4LjU0OS0xODIuOTE1LTQwOC41NDktNDA4LjU0OVM0NjkuODcxLTY0IDUxMi4wMDQtNjRjNDMuNzE1IDAgNDA4LjUzOSAzODkuODE4IDQwOC41MzkgNjE1LjQ1M0M5MjAuNTQ1IDc3Ny4wODUgNzM3LjYzMiA5NjAgNTEyLjAwNCA5NjB6TTIxOS4zNTEgNTYzLjMzNWMwIDE2Mi40MzMgMTMxLjY4IDI5NC4xMTMgMjk0LjExMSAyOTQuMTEzIDE2Mi40MzkgMCAyOTQuMTE1LTEzMS42OCAyOTQuMTE1LTI5NC4xMTMgMC04NC43ODctMzUuODgzLTE2MS4xODgtOTMuMjgyLTIxNC44Ni0uNDY5LS40NC03LjA2Mi0zLjcyOS04LjU3MSAxLjAyMmwtNDkuNTIzIDE1Mi44MTZjLTcuMTgyIDE5LjM0MS0yNi41ODEgMzAuMjU5LTQ2LjMyNiAzMC4yNTktOS44NTkgMC0xMC43NzctLjI2Mi0xNi42NDItLjI2Mkg0MTcuMDE3Yy0yMi41MyAwLTM5LjExMS0xMC42NTYtNDYuMjk1LTI5Ljk5N2wtNDkuOTY3LTE1MS45MzdjLTIuMjQ3LTYuMjEyLTcuNDY3LTIuNDc2LTcuNjMxLTIuMzIyLTU3Ljk0NiA1My43MTUtOTMuNzc0IDEzMC4wMzYtOTMuNzc0IDIxNS4yODJ6TTUxNC41OCA4MDAuNjY0YzY2Ljg1MSAwIDEyMS4wNDUtNTMuNjM1IDEyMS4wNDUtMTE5LjhzLTU0LjE5NC0xMTkuOC0xMjEuMDQ1LTExOS44Yy02Ni44NTMgMC0xMjEuMDQ1IDUzLjYzNS0xMjEuMDQ1IDExOS44czU0LjE5NCAxMTkuOCAxMjEuMDQ1IDExOS44eiIvPjxnbHlwaCB1bmljb2RlPSLupYMiIGdseXBoLW5hbWU9InBpbjQiIGQ9Ik0xMDA5LjQwOCA2NTEuMzI4bC0yOTQuMDE2IDI5NC4wOGMtOS4xNTIgOS4xODQtMjIuMjQgMTQuMDE2LTM0LjUyOCAxNC41OTItMTIuOTI4LS4xNi0yNS4yNDgtNi4wMTYtMzQuMTQ0LTE1LjM5Mi01Mi4wNjQtNTQuNTYtNzYuOTkyLTEyOC45MjgtNjkuMjE2LTIwMy4yMzJsLTk2LjczNi05Ni43NjhjLTQ2LjA4IDE3Ljg1Ni05NS42NDggMjcuMTY4LTE0NS4xODQgMjcuMTY4LTEwNi42ODggMC0yMDcuMDA4LTQxLjUzNi0yODIuMzM2LTExNi44NjRsLTcuMTY4LTcuMDcyYTQ3Ljk3NSA0Ny45NzUgMCAwMS0xNC4xMTItMzMuOTg0YzAtMTIuNzM2IDUuMDI0LTI0Ljk2IDE0LjA4LTMzLjk4NGwxOTYuNTc2LTE5Ni41NzZMNi45NzYtMTIuMDY0QzIuNTkyLTE3LjUzNiAwLTI0LjQ0OCAwLTMyYzAtMTcuNjk2IDE0LjMwNC0zMiAzMi0zMiA3LjU1MiAwIDE0LjQ5NiAyLjU5MiAxOS45MzYgNi45NzZsMjk1LjMyOCAyMzUuNjQ4TDU0My44NC0xNy45NTJhNDguMDYgNDguMDYgMCAwMTMzLjk1Mi0xNC4wOCA0Ny45MDcgNDcuOTA3IDAgMDEzMy45MiAxNC4wOGw3LjEzNiA3LjEzNmMxMTIuOCAxMTIuOCAxNDYuOTQ0IDI4MC44IDg5LjgyNCA0MjcuNjE2bDk2LjczNiA5Ni43MzZjNzQuNzItNy42OCAxNDguOTkyIDE3LjUwNCAyMDMuMiA2OS4xNTIgOS4zNDQgOC45MjggMTUuMjY0IDIxLjI0OCAxNS4zOTIgMzQuMTQ0LjE2IDEyLjkyOC01LjQ0IDI1LjM3Ni0xNC41OTIgMzQuNDk2ek04MzIgNjA4LjE5MmMtMTEuMTY4IDAtMjIuMzM2IDEuMTItMzMuMzQ0IDMuNDU2LTE1Ljg3MiAzLjM5Mi0zMi40MTYtMS41MzYtNDMuOTA0LTEzLjAyNEw2MTcuNiA0NjEuNDcyYy0xNC41MjgtMTQuNTI4LTE4LjIwOC0zNi43MzYtOS4xMi01NS4xNjggNTEuOTM2LTEwNS40MDggMzguMjcyLTIyOS44ODgtMzIuMzg0LTMyMC43NjhsLTQyNi41NiA0MjYuNTkyYzUyLjk2IDQxLjI4IDExNy43OTIgNjMuNjQ4IDE4Ni4wMTYgNjMuNjQ4IDQ2LjU5MiAwIDkzLjE4NC0xMC44MTYgMTM0Ljc1Mi0zMS4zMjggMTguMzY4LTkuMDU2IDQwLjU3Ni01LjQ0IDU1LjE2OCA5LjEyTDY2Mi42MjQgNjkwLjcyYzExLjQ4OCAxMS40ODggMTYuNDE2IDI4LjAzMiAxMi45OTIgNDMuOTA0LTIuMzM2IDExLjEzNi0zLjQ4OCAyMi4yNzItMy40ODggMzMuMzc2IDAgMjQuMDY0IDUuMzc2IDQ3Ljc0NCAxNS42NDggNjkuMjQ4bDIxMy40NzItMjEzLjUwNGMtMjEuMzEyLTEwLjIwOC00NS4xODQtMTUuNTUyLTY5LjI0OC0xNS41NTJ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6lhCIgZ2x5cGgtbmFtZT0icG9saWdvbm8iIGQ9Ik0yOTUuNzYgNTQuMjE4aC0yNC4yODNMMzIuODUxIDQ2Ny41MjMgMjcxLjQ4IDg4MC44MzdoNDc3LjIzNGwyMzguNjM1LTQxMy4zMTRMNzQ4LjcxNCA1NC4yMjFsLTQ1Mi45NTQtLjAwM3pNMTQ2LjQxOCA0NjcuNTIzbDE4MS44NDctMzE0Ljk1MSAzNjMuNjcuMDA2IDE4MS44NDEgMzE0Ljk0NS0xODEuODQxIDMxNC45NkgzMjguMjYybC0xODEuODQ0LTMxNC45NnoiLz48Z2x5cGggdW5pY29kZT0i7qWFIiBnbHlwaC1uYW1lPSJwb3NpY2lvbiIgZD0iTTY2My42NDYgMjU2LjIwN2MtMjEuODYxLTMxLjY0Ni00Mi4zNzMtNTkuMTM4LTU5LjQ1OS04MS4yMTMgMTY5LjQ5My0xMC4yMzUgMjgwLjU3NS00Ni44MjcgMzIxLjg3OC03NC4wMTktNDguMzktMzEuOTAzLTE5Mi4yNTMtNzYuNzgxLTQxNC4wMTEtNzYuNzgxcy0zNjUuNjY0IDQ0LjktNDE0LjA3NSA3Ni43ODFjNDEuMzI0IDI3LjIxNCAxNTIuMzIxIDYzLjc4NSAzMjEuNjQyIDczLjk3Ni0xNy4xMjkgMjIuMTE4LTM3LjY2MyA0OS41NjctNTkuNTQ1IDgxLjIxM0MxNTEuNDg2IDIzNS42My4wMDEgMTczLjkyMy4wMDEgMTAxLjAxN2MwLTg5LjcxNCAyMjkuMjUyLTE2Mi40NyA1MTIuMDExLTE2Mi40NyAyODIuNzggMCA1MTEuOTg5IDcyLjcxMyA1MTEuOTg5IDE2Mi40Ny4wNDMgNzIuOTQ5LTE1MS41OTMgMTM0LjY1Ni0zNjAuMzU0IDE1NS4xOXptLTIwNS40NDItNTguOTg4Yy0xMy42NiA5LjUyOC0yNy40NzEgMjEuNjI2LTQyLjI0NSAzNi4xMjEtMjkuMjY5IDI4LjkwNS02MS43NzIgNjcuNDI0LTkyLjg2MSAxMTAuODI1LTYxLjQ1MSA4Ny42MTUtMTE5LjA5IDE4OS42ODQtMTIwLjY3NSAyODEuODE3LjA4NiAxNjguODkzIDEzNy4xODMgMzA1LjkyNiAzMDYuMDEyIDMwNi4wMTIgMTY4Ljc4Ni0uMDg2IDMwNS45MjYtMTM3LjExOSAzMDYuMDEyLTMwNi4wMTItMS4xOTktODAuOTU2LTQ2LjA3Ny0xNjguNDQzLTk3LjgyOS0yNDguNTQzLTUzLjAxNS03OS43MzYtMTExLjg3NS0xNDcuNTAzLTE1Ny45OTUtMTgwLjIyLTE0LjIzOS04Ljk5My0yNS45MjktMTcuOTQzLTUwLjE2Ny0xOS4wOTl2NDIuODAxLTQyLjgyM2MtMjQuMjgxIDEuMTk5LTM1Ljk1IDEwLjEwNi01MC4yNTMgMTkuMTJ6TTI4OC4xMTIgNjI1Ljk4MmMtLjcwNy0zNi42MzUgMjIuMTM5LTk4LjUxNCA1Ni44OS0xNTcuOTczIDM0LjM0NC01OS44MjMgNzkuMjg2LTExOS4wMDUgMTE2LjY3MS0xNTguODMgMTguNTg1LTIwLjI3NyAzNi45NTYtMzUuNzc4IDQ2Ljc0MS00Mi41NDQuNDUuMy44OTkuNiAxLjM3Ljk0MiA3LjYyMiA1LjI0NiAxOC42NDkgMTQuNjAzIDMwLjkzOSAyNi43NjQgMjQuNzczIDI0LjM0NSA1NC45MiA1OS44ODggODMuMzMzIDk5LjY0OSA1Ny41OTcgNzguNjQ0IDEwNi4zMjkgMTc5LjA4NSAxMDQuNzQ1IDIzMS45OTItLjI1NyAxMjEuNDAzLTk5LjAwNiAyMjAuMTMxLTIyMC4zNjYgMjIwLjM0NS0xMjEuMzgxLS4yMTQtMjIwLjEwOS05OC45NDItMjIwLjMyMy0yMjAuMzQ1em0zNS41MjEgMGMuMDg2IDEwMi4wMDQgODIuNzc2IDE4NC43MTYgMTg0LjgwMiAxODQuODAydi04NS42NDZjLTU0LjUzNS0uMTI4LTk5LjAyOC00NC42MjEtOTkuMTEzLTk5LjE3OC4wODYtNTQuNDkyIDQ0LjU3OS05OS4wMjggOTkuMTEzLTk5LjExMyA1NC41MzUuMDg2IDk4Ljk4NSA0NC41NzkgOTkuMTEzIDk5LjExMy0uMTUgNTQuNTk5LTQ0LjU3OSA5OS4wMjgtOTkuMTEzIDk5LjExM3Y4NS43MzFjMTAxLjk4Mi0uMDg2IDE4NC42NzMtODIuNzU1IDE4NC43MzgtMTg0LjgwMi0uMDg2LTEwMS45ODItODIuNzU1LTE4NC42NzMtMTg0LjczOC0xODQuNzM4LTEwMi4wMjUuMDY0LTE4NC42OTUgODIuNzM0LTE4NC44MDIgMTg0LjcxNnoiLz48Z2x5cGggdW5pY29kZT0i7qWGIiBnbHlwaC1uYW1lPSJwb3NpY2lvbjIiIGQ9Ik04NzcuNzE0IDgyLjI4NnEwLTM2LTM1LjE0My02NC44NTd0LTkzLjcxNC00Ni4yODYtMTI4LjU3MS0yNi4yODZUNDc1LjQyOS02NHQtMTQ0Ljg1NyA4Ljg1Ny0xMjguNTcxIDI2LjI4Ni05My43MTQgNDYuMjg2LTM1LjE0MyA2NC44NTdxMCAyOCAxOC44NTcgNTAuNTcxdDUyIDM4IDY3LjQyOSAyNS40MjkgNzQuODU3IDE2Ljg1N3ExNC44NTcgMi44NTcgMjcuNDI5LTZ0MTQuODU3LTIzLjcxNHEyLjg1Ny0xNC44NTctNi0yNy40Mjl0LTIzLjcxNC0xNC44NTdxLTMzLjE0My01LjcxNC02MC41NzEtMTMuNDI5dC00My43MTQtMTQuNTcxLTI3LjcxNC0xMy40MjktMTUuNzE0LTExLjE0My00Ljg1Ny02Ljg1N3ExLjcxNC02LjI4NiAxNS40MjktMTUuMTQzdDQxLjcxNC0xOC44NTcgNjUuMTQzLTE4LjU3MSA5MS43MTQtMTQuMjg2IDExNS4xNDMtNS43MTQgMTE1LjE0MyA1LjcxNCA5MS43MTQgMTQuMjg2VDc0Ny40MzIgNDh0NDEuNzE0IDE5LjE0MyAxNS40MjkgMTUuNzE0cS0uNTcxIDIuMjg2LTQuODU3IDYuMjg2VDc4NC4wMDQgMTAwdC0yNy43MTQgMTMuNDI5LTQzLjcxNCAxNC4yODYtNjAuNTcxIDEzLjQyOXEtMTQuODU3IDIuMjg2LTIzLjcxNCAxNC44NTd0LTYgMjcuNDI5cTIuMjg2IDE0Ljg1NyAxNC44NTcgMjMuNzE0dDI3LjQyOSA2cTQwLjU3MS02Ljg1NyA3NC44NTctMTYuODU3dDY3LjQyOS0yNS40MjkgNTItMzggMTguODU3LTUwLjU3MXptLTIxOS40MjggNTEyVjM3NC44NTdxMC0xNC44NTctMTAuODU3LTI1LjcxNHQtMjUuNzE0LTEwLjg1N2gtMzYuNTcxVjExOC44NTdxMC0xNC44NTctMTAuODU3LTI1LjcxNHQtMjUuNzE0LTEwLjg1N0g0MDIuMjg3cS0xNC44NTcgMC0yNS43MTQgMTAuODU3dC0xMC44NTcgMjUuNzE0djIxOS40MjloLTM2LjU3MXEtMTQuODU3IDAtMjUuNzE0IDEwLjg1N3QtMTAuODU3IDI1LjcxNHYyMTkuNDI5cTAgMzAuMjg2IDIxLjQyOSA1MS43MTR0NTEuNzE0IDIxLjQyOWgyMTkuNDI5cTMwLjI4NiAwIDUxLjcxNC0yMS40Mjl0MjEuNDI5LTUxLjcxNHptLTU0Ljg1NyAyMTkuNDI4cTAtNTMuMTQzLTM3LjQyOS05MC41NzF0LTkwLjU3MS0zNy40MjktOTAuNTcxIDM3LjQyOS0zNy40MjkgOTAuNTcxIDM3LjQyOSA5MC41NzEgOTAuNTcxIDM3LjQyOVQ1NjYgOTA0LjI4NXQzNy40MjktOTAuNTcxeiIvPjxnbHlwaCB1bmljb2RlPSLupYciIGdseXBoLW5hbWU9InBvc2ljaW9uMyIgZD0iTTg5Ni4wMDMgMTI3Ljk5NWMwLTEzMS45MzUtMTk5LjA1Ny0xOTEuOTk3LTM4NC4wMDEtMTkxLjk5Ny0xODQuOTM0IDAtMzg0LjAwMyA2MC4wNjItMzg0LjAwMyAxOTEuOTk3IDAgMTA5LjEzMiAxMzYuMjUzIDE2OC45MzcgMjg3Ljk5OCAxODYuNDQxdi02NC45NGMtMTI5LjUyNy0xNi4zNjgtMjIzLjk5OC02NC4yNDctMjIzLjk5OC0xMjEuNTAxQzE5MS45OTkgNTcuMzE1IDMzNS4yMiAwIDUxMiAwYzE3Ni43NSAwIDMxOS45OTggNTcuMzE1IDMxOS45OTggMTI3Ljk5NSAwIDU3LjI1NC05NC40OTQgMTA1LjEzMy0yMjMuOTk4IDEyMS41MDF2NjQuOTRjMTUxLjc0My0xNy41MDQgMjg4LjAwMi03Ny4zMDkgMjg4LjAwMi0xODYuNDQxek01MTIgOTYwYy0xMjMuNjg5IDAtMjIzLjk5OC0xMDAuMzEyLTIyMy45OTgtMjI0LjAwMiAwLTExMi43NDcgODMuNTk0LTIwNS4xMjQgMTkxLjk5Ny0yMjAuNzQ1VjEyNy45OTZoNjQuMDAzdjM4Ny4yNTdjMTA4LjM3NCAxNS42MjEgMTkyLjAwNiAxMDcuOTk5IDE5Mi4wMDYgMjIwLjc0NUM3MzYuMDA4IDg1OS42ODcgNjM1LjY4OSA5NjAgNTEyIDk2MHptLTY0LjAwMy0xOTIuMDAyYy0zNS4zNzUgMC02My45OTYgMjguNjI4LTYzLjk5NiA2NC4wMDNzMjguNjIxIDYzLjk5NiA2My45OTYgNjMuOTk2YzM1LjM3OSAwIDY0LjAwMy0yOC42MjEgNjQuMDAzLTYzLjk5NnMtMjguNjI0LTY0LjAwMy02NC4wMDMtNjQuMDAzeiIvPjxnbHlwaCB1bmljb2RlPSLupYgiIGdseXBoLW5hbWU9InBvc2ljaW9uNCIgZD0iTTk5Mi4wMDYgNjcxLjk5OGMtMTMxLjU3LTQ4LjQ0LTIzMS44MDgtODIuOTM3LTMyMC4wMDEtMTkyLjAwMi03OC41NjktOTcuMTg1LTE5Mi4wMDYtMTMwLjg2OS0zMTkuOTk4LTY2LjgwOVY2NC4wMDRIMjg4djg2My45OTdjLS4wMDIgMTcuNjkgMTQuMzExIDMyIDMxLjk5OCAzMiAxNy42ODUgMCAzMi4wMDctMTQuMzExIDMyLjAwNy0zMiA3MS4wNTgtMTAzLjMxMSAxOTQuNTU3LTEyNi4xOTIgMzE5Ljk5OC0xMjguMDAzQzg2NCA3OTcuMTkxIDk5Mi4wMDYgNjcxLjk5OSA5OTIuMDA2IDY3MS45OTl6bS01NzYuMDA5LTQyNC41di02NS4xMTVDNDkxLjQ5NyAxNjYuOTM5IDU0NCAxMzQuMTc5IDU0NCA5NS45OTEgNTQ0IDQyLjk5MiA0NDMuNjgzLS4wMTIgMzE5Ljk5OC0uMDEyIDE5Ni4zMDktLjAxMiA5NiA0Mi45OTIgOTYgOTYuMDAxYzAgMzguMTc3IDUyLjQ5NyA3MC45MzUgMTI3Ljk5NSA4Ni4zODJ2NjUuMTE1QzEwNy43NTEgMjI3LjM3NSAzMS45OTMgMTcwLjk5NyAzMS45OTMgOTYuMDA0YzAtOTQuMTkgMTE4LjQzOS0xNjAuMDAzIDI4OC4wMDItMTYwLjAwMyAxNjkuNTU5IDAgMjg4LjAwNCA2NS44MTUgMjg4LjAwNCAxNjAuMDAzLjAwNCA3NC45OTQtNzUuNzYgMTMxLjM3MS0xOTIuMDA0IDE1MS40OTR6Ii8+PGdseXBoIHVuaWNvZGU9Iu6liSIgZ2x5cGgtbmFtZT0icG9zaWNpb241IiBkPSJNNjQ3LjU5NiA1ODcuMDQ5bDU4LjgzMy0yMTEuMzk0YzIuNjU2LTkuNTQyIDEuNDY3LTE4Ljc3LTMuNTY1LTI3LjY4NHMtMTIuMzE5LTE0LjY5OC0yMS44NjItMTcuMzU0bC0zNS4yMzMtOS44MDUgNzkuODc3LTE0NS4xNjIgNDUuOTY5LTM5Ljk4NWMyLjY1NS05LjU0MiAxLjQ2Ni0xOC43Ny0zLjU2Ni0yNy42ODNzLTEyLjMxOS0xNC42OTgtMjEuODYyLTE3LjM1NGwtMTkuMzMyLTQuOTQ2cy0xMi42NjYtMy4xMS0yMS4wNDctMi4zNDktMTkuOTU5IDYuNTU1LTE5Ljk1OSA2LjU1NWwtNDEuNTUxIDIxLjE3NC01Ni41ODQgODYuMzY2TDY0Ny45NTYgODAuMzFzNS4yODEtOC40MDcgMS40NzEtMjAuNTk4Yy0zLjA0Ny0xMS4wNDgtMTIuMTktMTIuOTUzLTEyLjE5LTEyLjk1M2wtNDYuMTk5LTEzLjA3Yy05LjU0Mi0yLjY1NS0xOC43Ny0xLjQ2Ny0yNy42ODMgMy41NjUtOC45MTMgNS4wMzQtMTQuNjk5IDEyLjMyMS0xNy4zNTQgMjEuODYyTDQzNC4zNzUgMjYxLjk3OGwtMzUuMjMzLTkuODA1Yy05LjU0Mi0yLjY1NS0xOC43Ny0xLjQ2Ny0yNy42ODMgMy41NjVzLTE0LjY5OSAxMi4zMjEtMTcuMzU0IDIxLjg2MmwtNTguODMzIDIxMS4zOTRjLTUuNDE0IDE5LjQ1MS0zLjE1NCAzNy45NzMgNi43NzggNTUuNTY2czI0LjYyNSAyOS4wOTYgNDQuMDc1IDM0LjUxbDIxMS4zOTQgNTguODMzYzE5LjQ1MSA1LjQxNCAzNy45NzQgMy4xNTQgNTUuNTY2LTYuNzc5czI5LjA5NS0yNC42MjQgMzQuNTA5LTQ0LjA3NXpNNTM1LjkxNSA3ODMuNzM1YzkuNDk5LTM0LjEzMSA1LjU3My02Ni41NjEtMTEuNzc0LTk3LjI5LTE3LjM0OS0zMC43MjktNDMuMDg5LTUwLjg0My03Ny4yMjEtNjAuMzQycy02Ni41NjItNS41NzQtOTcuMjkgMTEuNzc0Yy0zMC43MjkgMTcuMzQ5LTUwLjg0MyA0My4wODktNjAuMzQyIDc3LjIycy01LjU3NCA2Ni41NjIgMTEuNzc0IDk3LjI5YzE3LjM0OSAzMC43MjkgNDMuMDg5IDUwLjg0MyA3Ny4yMiA2MC4zNDJzNjYuNTYyIDUuNTc0IDk3LjI5MS0xMS43NzQgNTAuODQzLTQzLjA4OSA2MC4zNDItNzcuMjJ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6liiIgZ2x5cGgtbmFtZT0icG9zaWNpb242IiBkPSJNNDQ2LjAzMiA2NjcuNzcxYzYxLjcyMSAyMy4wMDcgOTMuMjIzIDkxLjk0NyA3MC4yMSAxNTMuNjc0LTIzLjAwNyA2MS43MjUtOTEuOTQ5IDkzLjIyMy0xNTMuNjcyIDcwLjIxMi02MS43MDYtMjMuMDAzLTkzLjE4Ni05MS45MzMtNzAuMTc3LTE1My42NTkgMjMuMDExLTYxLjcyNyA5MS45MzMtOTMuMjI5IDE1My42MzktNzAuMjI2ek03MTIuNzcgNDcyLjY1YzEzLjQwOC04LjgwNiAzMC40MDEtMTAuNzE1IDQ1LjQ0OS01LjEwNiAxMC4xMTkgMy43NzIgMTguNjEyIDEwLjU1MSAyNC41NiAxOS42MDMgNy40MTIgMTEuMjg0IDkuOTg2IDI0Ljc4MyA3LjI0OCAzOC4wMDctMi43MzYgMTMuMjI0LTEwLjQ1OSAyNC41OTItMjEuNzQ4IDMyLjAwNmwtNTcuOTg5IDM4LjA4OWMtMTMuMjA4IDguNjczLTM0LjkwOCAyMi4yODItNDguMzcyIDMwLjMzM2wtODMuMTU3IDQ5LjcyM2MtMTMuMjUzIDcuOTI0LTI1Ljc2NiAxMC42MzUtNDMuNjM3IDMuOTczLS40NDYtLjE2OC0xNDAuNjg3LTUyLjQ0NS0xNDAuNjg3LTUyLjQ0NWwtMTA5LjEzNiAyNi43MmMtMTMuMDQ2IDMuMTg5LTMwLjYzNCA4Ljg3NC0zNy42MzggMTEuODI3bC0xOC41MjIgNy43OTVjLTExLjkxMyA1LjAxNC0yNS4xNDcgNS4yODgtMzcuMjU3Ljc3NC0xMy4wMTUtNC44NTItMjMuNTY2LTE0Ljk3MS0yOC45NTEtMjcuNzY1LTUuMjM3LTEyLjQ0OC01LjMxMy0yNi4xODgtLjIxNS0zOC42OTMgNS4xLTEyLjUwNSAxNC43Ni0yMi4yNzQgMjcuMjA4LTI3LjUxM2wxOC41MTYtNy43ODljMTIuNjQyLTUuMzI1IDM1LjM0Ni0xMi41NjcgNTIuODEtMTYuODQ3bDE0My40NzMtMzUuMTIxIDc0LjY0OC0xNTYuMDhjLjEwNC0uNDIyLjE2Ni0uODQ0LjI4NS0xLjI2Mmw0Mi4zMTItMTU0LjExYzYuMTk5LTIyLjU5NiAyMi4yMjktNTEuNTAxIDM4LjEyMS02OC43MzFsNzUuOTE1LTgyLjM0YzE0Ljc0NC0xNS45OTMgMzcuNDQ0LTIxLjQyIDU3LjgyNy0xMy44MjJhNTIuOTU3IDUyLjk1NyAwIDAxMTcuNDg4IDEwLjc2OGMxMC40NjcgOS42NDYgMTYuNTUyIDIyLjc5NiAxNy4xMjcgMzcuMDI0LjU4IDE0LjIyMy00LjQxOCAyNy44MjYtMTQuMDcgMzguMjg5bC03NS45MjMgODIuMzQ4Yy00LjQxMSA0Ljc4OC0xMS45NjQgMTguMzk3LTEzLjY4OSAyNC42ODdsLTI4LjI5NSAxMDMuMDY0IDE2LjIwMiA2LjA0MiA2NS42MTItMTAzLjYzOWMxMi4xMzQtMTkuMTY1IDMxLjY4Ny0zMi4wNDUgNTMuNjMxLTM1LjM0NCAxMi42NTUtMS45MDUgMjUuNzY0LS41MTQgMzcuOTEzIDQuMDE0IDguNjY1IDMuMjMgMTYuNjUyIDcuOTQyIDIzLjc0IDE0LjAxMmw0NS4xNDYgMzguNjU4YzIyLjMyMyAxOS4xMTYgMjQuOTQxIDUyLjgzIDUuODI1IDc1LjE1My0xNC40OSAxNi45MjUtMzguMjQ2IDIzLjA3My01OS4xMTMgMTUuMjkyYTUzLjExNiA1My4xMTYgMCAwMS0xNi4wNDQtOS40NjhsLTE5LjI1NS0xNi40OS01OS4xOTEgOTMuNDg3LTQ1LjQxIDk0Ljk2YTk1MS4xNjMgOTUxLjE2MyAwIDAwOS4yNTctNS45OWw1Ny45ODktMzguMDk1eiIvPjxnbHlwaCB1bmljb2RlPSLupYsiIGdseXBoLW5hbWU9InBvc2ljaW9uNyIgZD0iTTg3Ny43MTQgODIuMjg2YzAtMjQtMTEuNzE0LTQ1LjYxOS0zNS4xNDMtNjQuODU3cy01NC42NjYtMzQuNjY2LTkzLjcxNC00Ni4yODZjLTM5LjA0Ny0xMS42MTktODEuOTA1LTIwLjM4MS0xMjguNTcxLTI2LjI4NlM1MjUuMzM0LTY0IDQ3NS40MjktNjRzLTk4LjE5IDIuOTUzLTE0NC44NTcgOC44NTctODkuNTIzIDE0LjY2Ny0xMjguNTcxIDI2LjI4NmMtMzkuMDQ3IDExLjYxOS03MC4yODYgMjcuMDQ4LTkzLjcxNCA0Ni4yODZTNzMuMTQ0IDU4LjI4NiA3My4xNDQgODIuMjg2YzAgMTguNjY3IDYuMjg2IDM1LjUyNCAxOC44NTcgNTAuNTcxczI5LjkwNSAyNy43MTQgNTIgMzhjMjIuMDk1IDEwLjI4NiA0NC41NzEgMTguNzYyIDY3LjQyOSAyNS40MjlzNDcuODEgMTIuMjg2IDc0Ljg1NyAxNi44NTdjOS45MDUgMS45MDUgMTkuMDQ4LS4wOTUgMjcuNDI5LTZzMTMuMzM0LTEzLjgwOSAxNC44NTctMjMuNzE0YzEuOTA1LTkuOTA1LS4wOTUtMTkuMDQ3LTYtMjcuNDI5cy0xMy44MDktMTMuMzMzLTIzLjcxNC0xNC44NTdjLTIyLjA5NS0zLjgwOS00Mi4yODYtOC4yODYtNjAuNTcxLTEzLjQyOXMtMzIuODU3LTEwLTQzLjcxNC0xNC41NzEtMjAuMDk1LTkuMDQ3LTI3LjcxNC0xMy40MjljLTcuNjE5LTQuMzgxLTEyLjg1Ny04LjA5NS0xNS43MTQtMTEuMTQzcy00LjQ3Ni01LjMzMy00Ljg1Ny02Ljg1N2MxLjE0My00LjE5IDYuMjg2LTkuMjM4IDE1LjQyOS0xNS4xNDNzMjMuMDQ4LTEyLjE5IDQxLjcxNC0xOC44NTdjMTguNjY3LTYuNjY2IDQwLjM4MS0xMi44NTcgNjUuMTQzLTE4LjU3MXM1NS4zMzQtMTAuNDc2IDkxLjcxNC0xNC4yODZjMzYuMzgxLTMuODA5IDc0Ljc2Mi01LjcxNCAxMTUuMTQzLTUuNzE0czc4Ljc2MiAxLjkwNSAxMTUuMTQzIDUuNzE0YzM2LjM4MSAzLjgxIDY2Ljk1MyA4LjU3MSA5MS43MTQgMTQuMjg2czQ2LjQ3NyAxMiA2NS4xNDMgMTguODU3YzE4LjY2NyA2Ljg1NyAzMi41NzEgMTMuMjM4IDQxLjcxNCAxOS4xNDNzMTQuMjg2IDExLjE0MyAxNS40MjkgMTUuNzE0Yy0uMzgxIDEuNTI0LTIgMy42MTktNC44NTcgNi4yODZzLTguMDk1IDYuMjg2LTE1LjcxNCAxMC44NTctMTYuODU3IDkuMDQ4LTI3LjcxNCAxMy40MjktMjUuNDI5IDkuMTQzLTQzLjcxNCAxNC4yODYtMzguNDc2IDkuNjE5LTYwLjU3MSAxMy40MjljLTkuOTA1IDEuNTI0LTE3LjgwOSA2LjQ3Ny0yMy43MTQgMTQuODU3cy03LjkwNSAxNy41MjQtNiAyNy40MjljMS41MjQgOS45MDUgNi40NzcgMTcuODEgMTQuODU3IDIzLjcxNHMxNy41MjQgNy45MDUgMjcuNDI5IDZjMjcuMDQ4LTQuNTcxIDUyLTEwLjE5IDc0Ljg1Ny0xNi44NTdzNDUuMzM0LTE1LjE0MyA2Ny40MjktMjUuNDI5YzIyLjA5NS0xMC4yODYgMzkuNDI5LTIyLjk1MiA1Mi0zOHMxOC44NTctMzEuOTA1IDE4Ljg1Ny01MC41NzF6bS0yMTkuNDI4IDUxMlYzNzQuODU3YzAtOS45MDUtMy42MTktMTguNDc2LTEwLjg1Ny0yNS43MTRzLTE1LjgwOS0xMC44NTctMjUuNzE0LTEwLjg1N2gtMzYuNTcxVjExOC44NTdjMC05LjkwNS0zLjYxOS0xOC40NzYtMTAuODU3LTI1LjcxNHMtMTUuODA5LTEwLjg1Ny0yNS43MTQtMTAuODU3SDQwMi4yODdjLTkuOTA1IDAtMTguNDc2IDMuNjE5LTI1LjcxNCAxMC44NTdzLTEwLjg1NyAxNS44MS0xMC44NTcgMjUuNzE0djIxOS40MjloLTM2LjU3MWMtOS45MDUgMC0xOC40NzYgMy42MTktMjUuNzE0IDEwLjg1N3MtMTAuODU3IDE1LjgxLTEwLjg1NyAyNS43MTR2MjE5LjQyOWMwIDIwLjE5MSA3LjE0MyAzNy40MjkgMjEuNDI5IDUxLjcxNHMzMS41MjQgMjEuNDI5IDUxLjcxNCAyMS40MjloMjE5LjQyOWMyMC4xOTEgMCAzNy40MjktNy4xNDMgNTEuNzE0LTIxLjQyOXMyMS40MjktMzEuNTIzIDIxLjQyOS01MS43MTR6bS01NC44NTcgMjE5LjQyOGMwLTM1LjQyOS0xMi40NzYtNjUuNjE5LTM3LjQyOS05MC41NzFzLTU1LjE0My0zNy40MjktOTAuNTcxLTM3LjQyOS02NS42MTkgMTIuNDc3LTkwLjU3MSAzNy40MjljLTI0Ljk1MiAyNC45NTMtMzcuNDI5IDU1LjE0My0zNy40MjkgOTAuNTcxczEyLjQ3NyA2NS42MTkgMzcuNDI5IDkwLjU3MWMyNC45NTMgMjQuOTUzIDU1LjE0MyAzNy40MjkgOTAuNTcxIDM3LjQyOXM2NS42MTktMTIuNDc2IDkwLjU3MS0zNy40MjljMjQuOTUzLTI0Ljk1MiAzNy40MjktNTUuMTQzIDM3LjQyOS05MC41NzF6bTI4OC0zNTEuNDI4YzAgMTUuMzAxLTUuNDEzIDI4LjM2NC0xNi4yMzkgMzkuMTlzLTIzLjg4OSAxNi4yMzktMzkuMTkgMTYuMjM5Yy0xNS4zIDAtMjguMzY0LTUuNDEzLTM5LjE5LTE2LjIzOXMtMTYuMjM5LTIzLjg4OS0xNi4yMzktMzkuMTljMC0xNS4zIDUuNDEzLTI4LjM2NCAxNi4yMzktMzkuMTlzMjMuODg5LTE2LjIzOSAzOS4xOS0xNi4yMzljMTUuMzAxIDAgMjguMzY0IDUuNDEzIDM5LjE5IDE2LjIzOXMxNi4yMzkgMjMuODg5IDE2LjIzOSAzOS4xOXptNTUuNDI4IDBjMC0xNS43MzMtMi4zODItMjguNjUzLTcuMTQ1LTM4Ljc1N2wtNzguODEzLTE2Ny41ODVjLTIuMzA5LTQuNzYzLTUuNzM4LTguNTE2LTEwLjI4NS0xMS4yNTlzLTkuNDE4LTQuMTE0LTE0LjYxNS00LjExNC0xMC4wNjggMS4zNzEtMTQuNjE1IDQuMTE0Yy00LjU0NyAyLjc0My03LjkwMyA2LjQ5NS0xMC4wNjggMTEuMjU5bC03OS4wMjkgMTY3LjU4NWMtNC43NjMgMTAuMTA0LTcuMTQ1IDIzLjAyMy03LjE0NSAzOC43NTcgMCAzMC42MDIgMTAuODI2IDU2LjcyNyAzMi40NzggNzguMzc5czQ3Ljc3OCAzMi40NzggNzguMzc5IDMyLjQ3OGMzMC42MDIgMCA1Ni43MjctMTAuODI2IDc4LjM3OS0zMi40NzhzMzIuNDc4LTQ3Ljc3OCAzMi40NzgtNzguMzc5ek0yMDUuNzE0IDczMmMwIDE1LjMwMS01LjQxMyAyOC4zNjQtMTYuMjM5IDM5LjE5cy0yMy44ODkgMTYuMjM5LTM5LjE5IDE2LjIzOWMtMTUuMyAwLTI4LjM2NC01LjQxMy0zOS4xOS0xNi4yMzlTOTQuODU2IDc0Ny4zMDEgOTQuODU2IDczMmMwLTE1LjMgNS40MTMtMjguMzY0IDE2LjIzOS0zOS4xOXMyMy44ODktMTYuMjM5IDM5LjE5LTE2LjIzOWMxNS4zMDEgMCAyOC4zNjQgNS40MTMgMzkuMTkgMTYuMjM5czE2LjIzOSAyMy44ODkgMTYuMjM5IDM5LjE5em01NS40MjkgMGMwLTE1LjczMy0yLjM4Mi0yOC42NTMtNy4xNDUtMzguNzU3bC03OC44MTMtMTY3LjU4NWMtMi4zMDktNC43NjMtNS43MzgtOC41MTYtMTAuMjg1LTExLjI1OXMtOS40MTgtNC4xMTQtMTQuNjE1LTQuMTE0LTEwLjA2OCAxLjM3MS0xNC42MTUgNC4xMTRjLTQuNTQ3IDIuNzQzLTcuOTAzIDYuNDk1LTEwLjA2OCAxMS4yNTlMNDYuNTczIDY5My4yNDNjLTQuNzYzIDEwLjEwNC03LjE0NSAyMy4wMjMtNy4xNDUgMzguNzU3IDAgMzAuNjAyIDEwLjgyNiA1Ni43MjcgMzIuNDc4IDc4LjM3OXM0Ny43NzggMzIuNDc4IDc4LjM3OSAzMi40NzhjMzAuNjAyIDAgNTYuNzI3LTEwLjgyNiA3OC4zNzktMzIuNDc4czMyLjQ3OC00Ny43NzggMzIuNDc4LTc4LjM3OXoiLz48Z2x5cGggdW5pY29kZT0i7qWMIiBnbHlwaC1uYW1lPSJwcmlzbWF0aWNvcyIgZD0iTTE4Mi4yMzcgODg1LjY4MmgxMzYuMzk3YzcuNjg0IDAgMTMuOTEyLTYuMjMgMTMuOTEyLTEzLjkxMnYtNTMuOTg5aDM1LjUzNWM3LjY4NCAwIDEzLjkxMi02LjIyOCAxMy45MTItMTMuOTE0VjY4NC45NjhoNTcuMzczYzcuOTgxIDEzLjU3NiAyMi41NzcgMjIuMTY2IDM4LjkzOSAyMi4xNjZoNjcuNjg0YzE2LjM1NyAwIDMwLjk1My04LjU4MyAzOC45MzktMjIuMTY2aDU3LjA4OHYxMTguODk3YzAgNy42ODYgNi4yMyAxMy45MTQgMTMuOTE0IDEzLjkxNGgzNS44MTV2NTMuOTkxYzAgNy42ODQgNi4yMjYgMTMuOTEyIDEzLjkxMiAxMy45MTJoMTM2LjM5OWM3LjY4NCAwIDEzLjkxMi02LjIyOCAxMy45MTItMTMuOTEydi01My45ODloMzUuMjQ4YzcuMzk1IDAgMTMuNTAyLTUuNzg4IDEzLjg5Ni0xMy4xNzVsMzMuMzk5LTU1My4yMThoMjcuMTU2YzcuNjg2IDAgMTMuOTE0LTYuMjI2IDEzLjkxNC0xMy45MTJWNDQuNzEyYzAtNy42ODQtNi4yMjgtMTMuOTEyLTEzLjkxNC0xMy45MTJINjE1LjU4MmMtNy42ODggMC0xMy45MTYgNi4yMjgtMTMuOTE2IDEzLjkxMnYxOTIuNzY0YzAgNy42ODYgNi4yMjggMTMuOTEyIDEzLjkxNiAxMy45MTJoMjYuNDM2djkwLjM0NUg1ODQuOTNjLTcuOTgxLTEzLjU3Ni0yMi41NzctMjIuMTYzLTM4LjkzOS0yMi4xNjNoLTY3LjY4NGMtMTYuMzU3IDAtMzAuOTU2IDguNTc5LTM4LjkzOSAyMi4xNjNoLTU3LjM4MXYtOTAuMzQ1aDI2LjQzOGM3LjY4NCAwIDEzLjkxMi02LjIyNiAxMy45MTItMTMuOTEyVjQ0LjcxMmMwLTcuNjg0LTYuMjI4LTEzLjkxMi0xMy45MTItMTMuOTEySDU4LjM0Yy03LjY4NCAwLTEzLjkxIDYuMjI4LTEzLjkxIDEzLjkxMnYxOTIuNzY0YzAgNy42ODYgNi4yMjggMTMuOTEyIDEzLjkxIDEzLjkxMmgyNy4xNTZsMzMuMzk1IDU1My4yMThjLjM5NSA3LjM4NSA2LjQ5NiAxMy4xNzcgMTMuODk2IDEzLjE3N2gzNS41MzN2NTMuOTg3Yy4wMDYgNy42ODQgNi4yMzIgMTMuOTEyIDEzLjkxOCAxMy45MTJ6bTEyMi40NzktMjcuODI0SDE5Ni4xNDN2LTQwLjA3N2gxMDguNTczdjQwLjA3N3ptNTIzLjQyNCAwSDcxOS41NjV2LTQwLjA3N0g4MjguMTR2NDAuMDc3em0tNjQ1LjkwMy02Ny45MDNoLTM2LjI1bC0zMi42MjMtNTM4LjU3M2gyNDAuODAydjUzOC41NzNoLTE3MS45M3ptNTIzLjQxNiAwaC0zNS44MTVWMjUxLjM4Nkg5MTAuNjRsLTMyLjYyMyA1MzguNTczLTE3Mi4zNjQtLjAwNHpNNTU5LjgxNyA2NzIuNDQyYy0zLjI0IDQuMjIxLTguMzM5IDYuODY5LTEzLjgzMiA2Ljg2OWgtNjcuNjg0Yy01LjQ5MSAwLTEwLjU5NC0yLjY1NC0xMy44MzItNi44NjlhMTMuOTIzIDEzLjkyMyAwIDAwLTEuMjQxLTcuMjcyYy0xLjUzNi0zLjI4NS0yLjMxMi02Ljc1Ni0yLjMxMi0xMC4zMDhWMzcxLjg0MWMwLTMuNTQ3Ljc3Ni03LjAxNCAyLjMxOC0xMC4zMDNhMTMuOTM5IDEzLjkzOSAwIDAwMS4yMzktNy4yNzRjMy4yNC00LjIxOSA4LjM0Mi02Ljg2OSAxMy44MzQtNi44NjloNjcuNjc4YzUuNDkzIDAgMTAuNTk0IDIuNjU0IDEzLjgzMiA2Ljg2OWExMy45MTggMTMuOTE4IDAgMDAxLjI0MSA3LjI3NGMxLjUzNCAzLjI4OSAyLjMxOCA2Ljc1NiAyLjMxOCAxMC4zMDN2MjgzLjAyMWMwIDMuNTQ5LS43OCA3LjAyMS0yLjMxNCAxMC4zMDhhMTMuODggMTMuODggMCAwMC0xLjI0NSA3LjI3MnptLTEyNi43MjgtMTUuMjk4aC01MS4xMDR2LTI4Ny41OWg1MS4xMDR2Mjg3LjU5em0yMDguOTIyIDBoLTUwLjgxNXYtMjg3LjU5aDUwLjgxNXYyODcuNTl6TTk4LjY4OSAyMjMuNTY2SDcyLjI1MVY1OC42MjRIMzk0LjUxdjE2NC45NDJIOTguNjg5em01NTcuMjM2IDBoLTI2LjQzOFY1OC42MjRoMzIyLjI1OXYxNjQuOTQySDY1NS45MjV6TTYxNS41NzQgMTYuNDY4Yy0xNS42MDYuMDA0LTI4LjI0NCAxMi42MzgtMjguMjU0IDI4LjI0NHYxOTIuNzY0Yy4wMSAxNS42MSAxMi42NTMgMjguMjQ0IDI4LjI1NCAyOC4yNDhsMTIuMDk1LjAwNHY2MS42NzFoLTM1LjI1OGMtMTEuMDUxLTEzLjc2My0yNy45OC0yMi4xODItNDYuNDI4LTIyLjE2NmgtNjcuNjg0Yy0xOC40NDItLjAxNi0zNS4zNzcgOC4zOTMtNDYuNDI4IDIyLjE2NmgtMzUuNTUzdi02MS42NzFoMTIuMTAyYzE1LjYwNi0uMDA4IDI4LjI0LTEyLjY0MiAyOC4yNDgtMjguMjUyVjQ0LjcxMmMtLjAwOC0xNS42MDYtMTIuNjQyLTI4LjIzNi0yOC4yNDgtMjguMjVINTguMzQzYy0xNS42MS4wMTQtMjguMjQgMTIuNjQ4LTI4LjI0OCAyOC4yNXYxOTIuNzY0Yy4wMDggMTUuNjEgMTIuNjQyIDI4LjI0NCAyOC4yNDggMjguMjQ4bDEzLjY1Ni4wMDQgMzIuNTc1IDUzOS42NDhjLjgxMSAxNC45ODkgMTMuMTg1IDI2LjczNyAyOC4yMTMgMjYuNzQ1aDIxLjE5N3YzOS42NjZjLjAyMyAxNS41OTMgMTIuNjQyIDI4LjIyMyAyOC4yNTIgMjguMjM2aDEzNi4zOTljMTUuNjA2LS4wMTIgMjguMjM2LTEyLjY0OCAyOC4yNDgtMjguMjUybC0uMDA0LTM5LjY1MWgyMS4yMDFjMTUuNjA2LS4wMDggMjguMjQtMTIuNjQyIDI4LjI0OC0yOC4yNDhWNjk5LjMwN2gzNS41NDljMTEuMDQ3IDEzLjc2NSAyNy45NzQgMjIuMTgyIDQ2LjQyMiAyMi4xNjhoNjcuNjg0YzE4LjQ0NC4wMTggMzUuMzczLTguMzk3IDQ2LjQyNi0yMi4xNjhoMzUuMjY1VjgwMy44N2MuMDEgMTUuNjEgMTIuNjQ0IDI4LjI0IDI4LjI1NCAyOC4yNDhoMjEuNDczdjM5LjY1MWMuMDA4IDE1LjYwNiAxMi42NDIgMjguMjQ0IDI4LjI1MiAyOC4yNTJoMTM2LjM5OWMxNS42MDYtLjAxMiAyOC4yMzYtMTIuNjQyIDI4LjI0NC0yOC4yNTJ2LTM5LjY1MWgyMC45MTZjMTUuMDItLjAwOCAyNy4zOTgtMTEuNzQxIDI4LjIwMy0yNi42NDdsMzIuNTgyLTUzOS43NDJoMTMuNjY0YzE1LjYwMi0uMDA4IDI4LjI0NC0xMi42NDIgMjguMjUtMjguMjUyVjQ0LjcxM2MtLjAwNi0xNS42MDYtMTIuNjQ0LTI4LjI0LTI4LjI1LTI4LjI1bC0zNTAuMDg3LjAwNnptMjguMjQ4IDU2LjQ5NmgyOTMuNTg3djEzNi4yNjhINjQzLjgyMlY3Mi45NjR6bS01NTcuMjM3IDBoMjkzLjU4N3YxMzYuMjY4SDg2LjU4NVY3Mi45NjR6bTQyLjAxMyAxOTIuNzZoMjExLjIzM3Y1MDkuODk1SDE1OS40NzhsLTMwLjg4LTUwOS44OTV6bTU1NS41NzEuMDA0aDIxMS4yMzlsLTMwLjg4NiA1MDkuODk3LTE4MC4zNTEtLjAwNFYyNjUuNzI4aC0uMDAyem0tMjM2LjYwMyA5MC4zNDVsMi4zMDYtMy45MjQuMzI4IDMuNDE2YTM4Ljc2IDM4Ljc2IDAgMDAtMi43NzMgOC4yNTV2LTcuNzQ4aC4xMzl6bTEyNi44NjUtMy44OTFsMi4yODYgMy44ODdoLjE0MXY3Ljc2OGEzOS4xNiAzOS4xNiAwIDAwLTIuNzY5LTguMjY2bC4zNDItMy4zODl6bS0yOC40NDYgOS41NTJoLjA4NGEyNy41NzcgMjcuNTc3IDAgMDAxLjk5OSA1Ljg2M2MuNjg2IDEuNDk1Ljk2NyAyLjgxMi45NzMgNC4yNDF2MjgzLjAyM2MtLjAwNiAxLjQ0Ni0uMjg3IDIuNzY3LS45NSA0LjIwNWEyOC4wOTcgMjguMDk3IDAgMDAtMi4wMTMgNS45MDhINDc4LjIxYTI4LjQ0IDI4LjQ0IDAgMDAtMS45OTMtNS44NzRjLS42NzItMS40NjQtLjk1Mi0yLjc3NS0uOTYzLTQuMjM5VjM3MS44NGMuMDA4LTEuNDUyLjI4Ny0yLjc1My45NzktNC4yNTRhMjguMjY1IDI4LjI2NSAwIDAwMS45ODItNS44NTFoLjA5Nmw2Ny42NzQtLjAwMnptNTkuNTQ1IDIyLjE1N2gyMi4xNDV2MjU4LjkxNkg2MDUuNTNWMzgzLjg5MXptLTIwOS4yMTEgMGgyMi40MzZ2MjU4LjkxOGwtMjIuNDM2LjAwMnYtMjU4Ljkyem0yNDUuNjkgMjczLjI1M3ptLTIwOC45MTggMHptMTQuMzM2IDUuNzQ0YTM4LjU5NiAzOC41OTYgMCAwMDIuNzY3IDguMjUxbC0uMzM4IDMuMzk4LTIuMjk2LTMuOTA2aC0uMTM1di03Ljc0M2guMDAyem0xMjkuNDMzLjAwMnY3Ljc0MWgtLjE0M2wtMi4yNjkgMy44NjctLjM1NC0zLjM0OGEzOC45NTEgMzguOTUxIDAgMDAyLjc2Ny04LjI2em0tMTcuMDQzIDkuNTUyem0xNDUuODM2IDExNy41MTV6bTI4LjI0NCA0Mi4xNkg4MTMuOHYxMS40MDVsLTc5LjkwMy4wMDJ2LTExLjQwN3ptLTUyMy40MTggMGg3OS44OTl2MTEuNDA3aC03OS44OTl2LTExLjQwN3ptNjE3LjY2MSAyNS43Mzl6bS01MjMuNDI2IDB6Ii8+PGdseXBoIHVuaWNvZGU9Iu6ljSIgZ2x5cGgtbmFtZT0icmVnbGEiIGQ9Ik03NDQuODYyIDkzOS42MzJMMzYuMzI2IDIzMS4wODcgMzAyLjAyOS0zNC42MTZsNzA4LjUzNiA3MDguNTQ1LTI2NS43MDMgMjY1LjcwM3pNMzAyLjAyNiA1My45NTRMMTI0Ljg5MyAyMzEuMDg3bDY2LjQyMyA2Ni40MjYgODguNTY3LTg4LjU3IDQ0LjI4NSA0NC4yODUtODguNTY0IDg4LjU3IDQ0LjI4MiA0NC4yODIgNDQuMjg1LTQ0LjI4MiA0NC4yODIgNDQuMjgyLTQ0LjI4MiA0NC4yODIgNDQuMjg1IDQ0LjI5NCA4OC41NjctODguNTc2IDQ0LjI4NSA0NC4yODItODguNTY3IDg4LjU3NiA0NC4yODIgNDQuMjg1IDQ0LjI4NS00NC4yODUgNDQuMjg1IDQ0LjI4NS00NC4yODUgNDQuMjg1IDQ0LjI4NSA0NC4yODUgODguNTY0LTg4LjU3IDQ0LjI4NSA0NC4yODUtODguNTY3IDg4LjU2NyA0NC4yODIgNDQuMjg1IDQ0LjI4NS00NC4yODUgNDQuMjgyIDQ0LjI4NS00NC4yODIgNDQuMjg1IDY2LjQyNiA2Ni40MjYgMTc3LjEzMy0xNzcuMTMzTDMwMi4wMjkgNTMuOTU3eiIvPjxnbHlwaCB1bmljb2RlPSLupY4iIGdseXBoLW5hbWU9InJlZ2xhcyIgZD0iTTAgOTMxLjk3MVYtMzUuOTc0aDM2Ni42NTV2NjAxLjIwM2g2NTcuMzQ3djM2Ni43NDJILS4wMDF6bTMwNS43ODYtOTA3LjA2SDYwLjg2M1Y4MC40NWg4MC44NTF2NjAuODY0SDYwLjg2M3Y2MC44NTNoMTQxLjcwNHY2MC44NThINjAuODYzdjYwLjg3N2g4MC44NTF2NjAuODkzSDYwLjg2M3Y2MC44NjFoODAuODUxdjYwLjg1M0g2MC44NjN2NTguNzJoMjQ0LjkyM1YyNC45MTF6TTk2My4xNSA2MjYuMTI2aC01NS40NnY4MC44NjFoLTYwLjg1OHYtODAuODYxaC02MC44ODN2MTQxLjczNmgtNjAuOTQ3VjYyNi4xMjNoLTYwLjg1M3Y4MC44NjRoLTYwLjg3NXYtODAuODYxaC02MC44NTN2ODAuODYxaC02MC44NTN2LTgwLjg2MWgtNjAuODUzdjE0MS43MzZoLTYwLjg1OFY2MjYuMTIzaC02MC44NjR2ODAuODY0aC02MC44NTh2LTgwLjg2MWgtNjAuOTM3djgwLjg2MWgtNjAuODkxdi04MC44NjFINjAuODYzdjI0NC45NWg5MDIuMjg2di0yNDQuOTV6Ii8+PGdseXBoIHVuaWNvZGU9Iu6ljyIgZ2x5cGgtbmFtZT0icnV0YSIgZD0iTTgyMC43OTkgNTU0LjM5MmMuMDMzIDAgLjA2LjAyMS4wOTMuMDIxLS4wMzMgMC0uMDkzLS4wMjEtLjE2NS0uMDIxaC4wNzJ6bS00Ny4xMDIgMjUuOTY5Yy04LjUwNiAxMy40NC0xNy4yMDUgMjcuNzY4LTI1Ljk0OCA0Mi4zNGgtNjExLjg5Yy0zMy4zMjEgMC02MC40MjktMjcuMTExLTYwLjQyOS02MC40MzN2LTcyLjU3NWMwLTMzLjMxOSAyNy4xMDktNjAuNDIxIDYwLjQyOS02MC40MjFoMzU3LjcwN2MzLjQ3NSAwIDYuMzA1LTIuODM0IDYuMzA1LTYuMzAxVjMyMi44NDZjMC0zNC43MDggMjguMjUzLTYyLjk0MiA2Mi45NC02Mi45NDJoMTYxLjc5MWM3LjQwNyAwIDEzLjQ0Mi02LjAxNCAxMy40NDItMTMuNDIxVjE3LjczNGMwLTcuNDA3LTYuMDM3LTEzLjQzLTEzLjQ0Mi0xMy40M2gtMzQ3LjRjLTExLjQzNy0xOS41NTktMjMuMDc3LTM4Ljc1OC0zNC4zMTgtNTYuNTM0LTIuODQtNC40ODEtNi4zMzYtOC4zNTMtMTAuMTcxLTExLjc3MWgzOTEuODljNDUuMDY2IDAgODEuNzUxIDM2LjY3MiA4MS43NTEgODEuNzMydjIyOC43NTFjMCA0NS4wNi0zNi42ODQgODEuNzI4LTgxLjc1MSA4MS43MjhINTY4LjE4MXY5NC43NmMwIDQxLjE0LTMzLjQ4NSA3NC42MDctNzQuNjExIDc0LjYwN0gxNDMuNzM4djU2LjgxNGg2NzYuOTkxYy0xOS4yNDIuMDU0LTM2LjgxNiA5Ljc3OC00Ny4wMzEgMjUuOTY5ek0yOTUuNzkgMzI3LjM5M2MtNzAuNTQxIDAtMTI3Ljc3MS01Ny4yMDItMTI3Ljc3MS0xMjcuNzcxIDAtNTMuNzk5IDc0LjI3My0xNzcuNzcyIDEwOS41NTYtMjMzLjYzNiAzLjk0MS02LjIzNSAxMC44NDEtMTAuMDIzIDE4LjIxNS0xMC4wMjNhMjEuNTQxIDIxLjU0MSAwIDAxMTguMjEzIDEwLjAzOWMzNS4zMTggNTUuODg1IDEwOS41NTggMTc5LjgyIDEwOS41NTggMjMzLjYyMSAwIDcwLjU3LTU3LjIwMiAxMjcuNzY5LTEyNy43NzEgMTI3Ljc2OXptMC0xOTAuODQxYy0zMS42NTUgMC01Ny4zMDUgMjUuNjYyLTU3LjMwNSA1Ny4zMTkgMCAzMS42NjQgMjUuNjQ3IDU3LjMxNSA1Ny4zMDUgNTcuMzE1IDMxLjY1MyAwIDU3LjMwMy0yNS42NDkgNTcuMzAzLTU3LjMxNS0uMDAyLTMxLjY1Ny0yNS42NDktNTcuMzE5LTU3LjMwMy01Ny4zMTl6TTgyMC43OTkgOTYwYy03MC41NDkgMC0xMjcuNzgyLTU3LjIwMi0xMjcuNzgyLTEyNy43NzEgMC01My44MDUgNzQuMjQyLTE3Ny43MzkgMTA5LjU2OC0yMzMuNjI2IDMuOTM5LTYuMjUxIDEwLjgwOC0xMC4wMzUgMTguMjEzLTEwLjA1NiA3LjM2MiAwIDE0LjI3NSAzLjgwNSAxOC4yMDMgMTAuMDQzIDM1LjI5NSA1NS44NjIgMTA5LjU2OCAxNzkuODMzIDEwOS41NjggMjMzLjYzNiAwIDcwLjU3Mi01Ny4yMDIgMTI3Ljc3My0xMjcuNzcxIDEyNy43NzN6bTAtMTkwLjg0N2MtMzEuNjU1IDAtNTcuMzA1IDI1LjY2Ni01Ny4zMDUgNTcuMzE5IDAgMzEuNjY4IDI1LjY0NyA1Ny4zMTUgNTcuMzA1IDU3LjMxNSAzMS42NDUgMCA1Ny4yOTQtMjUuNjQ1IDU3LjI5NC01Ny4zMTUgMC0zMS42NTMtMjUuNjQ5LTU3LjMxOS01Ny4yOTQtNTcuMzE5eiIvPjxnbHlwaCB1bmljb2RlPSLupZAiIGdseXBoLW5hbWU9InNwaW5uZXIiIGQ9Ik0zMDAuNTcxIDE2My40MjlxMC0zMC4yODYtMjEuNDI5LTUxLjcxNHQtNTEuNzE0LTIxLjQyOXEtMjkuNzE0IDAtNTEuNDI5IDIxLjcxNHQtMjEuNzE0IDUxLjQyOXEwIDMwLjI4NiAyMS40MjkgNTEuNzE0dDUxLjcxNCAyMS40MjkgNTEuNzE0LTIxLjQyOSAyMS40MjktNTEuNzE0ek01ODUuMTQzIDQ1LjcxNHEwLTMwLjI4Ni0yMS40MjktNTEuNzE0VDUxMi0yNy40MjkgNDYwLjI4Ni02dC0yMS40MjkgNTEuNzE0IDIxLjQyOSA1MS43MTRUNTEyIDExOC44NTd0NTEuNzE0LTIxLjQyOSAyMS40MjktNTEuNzE0ek0xODIuODU3IDQ0OHEwLTMwLjI4Ni0yMS40MjktNTEuNzE0dC01MS43MTQtMjEuNDI5VDU4IDM5Ni4yODYgMzYuNTcxIDQ0OCA1OCA0OTkuNzE0dDUxLjcxNCAyMS40MjkgNTEuNzE0LTIxLjQyOVQxODIuODU3IDQ0OHptNjg2Ljg1Ny0yODQuNTcxcTAtMjkuNzE0LTIxLjcxNC01MS40Mjl0LTUxLjQyOS0yMS43MTRxLTMwLjI4NiAwLTUxLjcxNCAyMS40Mjl0LTIxLjQyOSA1MS43MTQgMjEuNDI5IDUxLjcxNCA1MS43MTQgMjEuNDI5IDUxLjcxNC0yMS40MjkgMjEuNDI5LTUxLjcxNHpNMzE4Ljg1NyA3MzIuNTcxcTAtMzcuNzE0LTI2Ljg1Ny02NC41NzF0LTY0LjU3MS0yNi44NTdUMTYyLjg1OCA2Njh0LTI2Ljg1NyA2NC41NzEgMjYuODU3IDY0LjU3MSA2NC41NzEgMjYuODU3VDI5MiA3OTcuMTQydDI2Ljg1Ny02NC41NzF6TTk4Ny40MjkgNDQ4cTAtMzAuMjg2LTIxLjQyOS01MS43MTR0LTUxLjcxNC0yMS40MjktNTEuNzE0IDIxLjQyOVQ4NDEuMTQzIDQ0OHQyMS40MjkgNTEuNzE0IDUxLjcxNCAyMS40MjlUOTY2IDQ5OS43MTQgOTg3LjQyOSA0NDh6TTYyMS43MTQgODUwLjI4NnEwLTQ1LjcxNC0zMi03Ny43MTR0LTc3LjcxNC0zMi03Ny43MTQgMzItMzIgNzcuNzE0IDMyIDc3LjcxNFQ1MTIgOTYwdDc3LjcxNC0zMiAzMi03Ny43MTR6bTMwMi44NTctMTE3LjcxNXEwLTUzLjE0My0zNy43MTQtOTAuNTcxdC05MC4yODYtMzcuNDI5cS01My4xNDMgMC05MC41NzEgMzcuNDI5dC0zNy40MjkgOTAuNTcxcTAgNTIuNTcxIDM3LjQyOSA5MC4yODZ0OTAuNTcxIDM3LjcxNHE1Mi41NzEgMCA5MC4yODYtMzcuNzE0dDM3LjcxNC05MC4yODZ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6lkSIgZD0iTTUxMiA4NTcuNmMxOS44MDQgMCAzNS44NC0yMi45MjcgMzUuODQtNTEuMlY3MDRjMC0yOC4yNzMtMTYuMDM2LTUxLjItMzUuODQtNTEuMi0xOS43OTQgMC0zNS44NCAyMi45MjctMzUuODQgNTEuMnYxMDIuNGMwIDI4LjI3MyAxNi4wNDYgNTEuMiAzNS44NCA1MS4yeiIvPjxnbHlwaCB1bmljb2RlPSLupZIiIGQ9Ik05MjEuNiA0NDhjMC0xOS44MDQtMjIuOTE3LTM1Ljg0LTUxLjItMzUuODRINzY4Yy0yOC4yODMgMC01MS4yIDE2LjAzNi01MS4yIDM1Ljg0IDAgMTkuNzk0IDIyLjkxNyAzNS44NCA1MS4yIDM1Ljg0aDEwMi40YzI4LjI4MyAwIDUxLjItMTYuMDQ2IDUxLjItMzUuODR6Ii8+PGdseXBoIHVuaWNvZGU9Iu6lkyIgZD0iTTg2Ni43MjQgMjQzLjJjLTkuOTAyLTE3LjE0Mi0zNy43NjUtMTkuNTc5LTYyLjI1OS01LjQzN2wtODguNjc4IDUxLjJjLTI0LjQ4NCAxNC4xNDEtMzYuMzIxIDM5LjQ5Ni0yNi40MjkgNTYuNjM3IDkuOTAyIDE3LjE0MiAzNy43NzUgMTkuNTc5IDYyLjI1OSA1LjQzN2w4OC42NzgtNTEuMmMyNC40OTQtMTQuMTQxIDM2LjMyMS0zOS40OTYgMjYuNDI5LTU2LjYzN3oiLz48Z2x5cGggdW5pY29kZT0i7qWUIiBkPSJNNzE2LjggOTMuMjc2Yy0xNy4xNDItOS45MDItNDIuNDk2IDEuOTI1LTU2LjYzNyAyNi40MTlsLTUxLjIgODguNjc4Yy0xNC4xNDEgMjQuNDg0LTExLjcwNCA1Mi4zNTcgNS40MzcgNjIuMjU5IDE3LjE0MiA5LjkwMiA0Mi40OTYtMS45MzUgNTYuNjM3LTI2LjQxOWw1MS4yLTg4LjY3OGMxNC4xNDEtMjQuNDk0IDExLjcwNC01Mi4zNTctNS40MzctNjIuMjU5eiIvPjxnbHlwaCB1bmljb2RlPSLupZUiIGQ9Ik01MTIgMzguNGMtMTkuNzk0IDAtMzUuODQgMjIuOTE3LTM1Ljg0IDUxLjJWMTkyYzAgMjguMjgzIDE2LjA0NiA1MS4yIDM1Ljg0IDUxLjIgMTkuODA0IDAgMzUuODQtMjIuOTE3IDM1Ljg0LTUxLjJWODkuNmMwLTI4LjI4My0xNi4wMzYtNTEuMi0zNS44NC01MS4yeiIvPjxnbHlwaCB1bmljb2RlPSLupZYiIGQ9Ik0zMDcuMiA5My4yNzZjLTE3LjE0MiA5LjkwMi0xOS41NzkgMzcuNzY1LTUuNDM3IDYyLjI1OWw1MS4yIDg4LjY3OGMxNC4xNDEgMjQuNDg0IDM5LjQ5NiAzNi4zMjEgNTYuNjM3IDI2LjQxOSAxNy4xNDItOS45MDIgMTkuNTc5LTM3Ljc3NSA1LjQzNy02Mi4yNTlsLTUxLjItODguNjc4Yy0xNC4xNDEtMjQuNDk0LTM5LjQ5Ni0zNi4zMTEtNTYuNjM3LTI2LjQxOXoiLz48Z2x5cGggdW5pY29kZT0i7qWXIiBkPSJNMTU3LjI3NiAyNDMuMmMtOS44OTIgMTcuMTQyIDEuOTM1IDQyLjQ5NiAyNi40MTkgNTYuNjM3bDg4LjY3OCA1MS4yYzI0LjQ5NCAxNC4xNDEgNTIuMzY3IDExLjcwNCA2Mi4yNjktNS40MzcgOS44OTItMTcuMTQyLTEuOTM1LTQyLjQ5Ni0yNi40MjktNTYuNjM3bC04OC42NzgtNTEuMmMtMjQuNDg0LTE0LjE0MS01Mi4zNTctMTEuNzA0LTYyLjI1OSA1LjQzN3oiLz48Z2x5cGggdW5pY29kZT0i7qWYIiBkPSJNMTAyLjQgNDQ4YzAgMTkuNzk0IDIyLjkyNyAzNS44NCA1MS4yIDM1Ljg0SDI1NmMyOC4yNzMgMCA1MS4yLTE2LjA0NiA1MS4yLTM1Ljg0IDAtMTkuODA0LTIyLjkyNy0zNS44NC01MS4yLTM1Ljg0SDE1My42Yy0yOC4yNzMgMC01MS4yIDE2LjAzNi01MS4yIDM1Ljg0eiIvPjxnbHlwaCB1bmljb2RlPSLupZkiIGQ9Ik0xNTcuMjc2IDY1Mi44YzkuOTAyIDE3LjE0MiAzNy43NzUgMTkuNTc5IDYyLjI1OSA1LjQzN2w4OC42ODktNTEuMmMyNC40ODQtMTQuMTQxIDM2LjMxMS0zOS40OTYgMjYuNDE5LTU2LjYzNy05LjkwMi0xNy4xNDItMzcuNzc1LTE5LjU3OS02Mi4yNTktNS40MzdsLTg4LjY4OSA1MS4yYy0yNC40ODQgMTQuMTQxLTM2LjMxMSAzOS40OTYtMjYuNDE5IDU2LjYzN3oiLz48Z2x5cGggdW5pY29kZT0i7qWaIiBkPSJNMzA3LjIgODAyLjcyNGMxNy4xNDIgOS44OTIgNDIuNDk2LTEuOTI1IDU2LjYzNy0yNi40MTlsNTEuMi04OC42NzhjMTQuMTMxLTI0LjQ5NCAxMS43MDQtNTIuMzY3LTUuNDM3LTYyLjI2OS0xNy4xNDItOS44OTItNDIuNDk2IDEuOTM1LTU2LjYzNyAyNi40MjlsLTUxLjIgODguNjc4Yy0xNC4xNDEgMjQuNDk0LTExLjcwNCA1Mi4zNTcgNS40MzcgNjIuMjU5eiIvPjxnbHlwaCB1bmljb2RlPSLupZsiIGdseXBoLW5hbWU9InN1YmlyIiBkPSJNOTI4IDM3MGMzMCAwIDU0LTI0IDU0LTU0VjIyYzAtMzAtMjQtNTQtNTQtNTRIOTJDNjItMzIgMzYtOCAzNiAyMnYyOTRjMCAzMCAyNiA1NCA1NiA1NHM1NC0yNCA1NC01NFY3OGg3Mjh2MjM4YzAgMzAgMjQgNTQgNTQgNTR6TTMyOCA2MjhjLTIyLTIyLTU0LTIyLTc2IDBzLTIyIDU0IDAgNzZsMjIwIDIyMGMxMCAxMCAyNCAxNiAzOCAxNnMyOC02IDM4LTE2bDIyMC0yMjBjMjItMjIgMjItNTQgMC03Ni0xMC0xMC0yNC0xNi0zOC0xNnMtMzAgNi00MCAxNkw1NjQgNzU0VjI4NmMwLTMwLTI0LTU0LTU0LTU0cy01NCAyNC01NCA1NHY0NjhMMzI4IDYyOHoiLz48Z2x5cGggdW5pY29kZT0i7qWcIiBnbHlwaC1uYW1lPSJ0YW1hbm8iIGQ9Ik03MjkuOTEzIDcxOC4yNDRINTAuOTI1QzIyLjc5NSA3MTguMjQ0IDAgNjk1LjQ1MyAwIDY2Ny4zMjFWLTExLjY2N2MwLTI4LjEzIDIyLjc5NS01MC45MjUgNTAuOTI1LTUwLjkyNWg2NzguOTg4YzI4LjEzIDAgNTAuOTIzIDIyLjc5NSA1MC45MjMgNTAuOTI1djY3OC45ODhjMCAyOC4xMzItMjIuNzkzIDUwLjkyMy01MC45MjMgNTAuOTIzek02NzguOTg4IDM5LjI1OGgtNTc3LjE0djU3Ny4xNGg1NzcuMTRWMzkuMjU4em0zMzQuOTE3IDYyLjYyN2gtNTUuMjMzdjU5NC4zMTRoNTUuMjMzYzQuMDc5IDAgNy43NTggMi40NTQgOS4zMTYgNi4yMzFhMTAuMDYgMTAuMDYgMCAwMS0yLjE4NyAxMS4wMDZsLTg5LjE2NyA4OS4xNjdjLTMuOTQ2IDMuOTQ2LTEwLjM0MyAzLjk0Ni0xNC4yODcgMGwtODkuMTY5LTg5LjE2N2ExMC4wNTggMTAuMDU4IDAgMDEtMi4xODctMTEuMDA2IDEwLjA3NyAxMC4wNzcgMCAwMTkuMzE4LTYuMjMxaDU1LjIzM1YxMDEuODg1aC01NS4yMzNhMTAuMDc0IDEwLjA3NCAwIDAxLTkuMzE4LTYuMjMxIDEwLjA3IDEwLjA3IDAgMDEyLjE4Ny0xMS4wMUw5MTcuNTgtNC41MjNjMy45NDQtMy45NDYgMTAuMzQzLTMuOTQ2IDE0LjI4NyAwbDg5LjE2NyA4OS4xNjdhMTAuMDU2IDEwLjA1NiAwIDAxMi4xODcgMTEuMDEgMTAuMDY3IDEwLjA2NyAwIDAxLTkuMzE2IDYuMjMxem0tODY2LjY3IDY2MS4xMTdhMTAuMDYgMTAuMDYgMCAwMTExLjAwOC0yLjE4NyAxMC4wNjkgMTAuMDY5IDAgMDE2LjIzMyA5LjMxNnY1NS4yMzNINzU4Ljc5di01NS4yMzNjMC00LjA3OSAyLjQ1Mi03Ljc2IDYuMjMxLTkuMzE2YTEwLjA2NCAxMC4wNjQgMCAwMTExLjAwOCAyLjE4N2w4OS4xNjcgODkuMTY3YzMuOTQ2IDMuOTQ4IDMuOTQ2IDEwLjM0NyAwIDE0LjI5MWwtODkuMTY3IDg5LjE2NWExMC4wNTkgMTAuMDU5IDAgMDEtMTEuMDA4IDIuMTg5IDEwLjA2OSAxMC4wNjkgMCAwMS02LjIzMS05LjMxNnYtNTUuMjM3SDE2NC40NzZ2NTUuMjM3YTEwLjA3IDEwLjA3IDAgMDEtNi4yMzMgOS4zMTYgMTAuMDYgMTAuMDYgMCAwMS0xMS4wMDgtMi4xODlMNTguMDcgODY2LjQ2Yy0zLjk0Ni0zLjk0NC0zLjk0Ni0xMC4zNDMgMC0xNC4yOTFsODkuMTY1LTg5LjE2N3oiLz48Z2x5cGggdW5pY29kZT0i7qWdIiBnbHlwaC1uYW1lPSJ0ZW1wZXJhdHVyYSIgZD0iTTUzOS4zODQgMjg2Ljk0NXYzMDUuMTAzYzAgMTUuMDYxLTEyLjMyNSAyNy4zODQtMjcuMzg0IDI3LjM4NC0xNS4wNjEgMC0yNy4zODQtMTIuMzIzLTI3LjM4NC0yNy4zODRWMjg2Ljk0NWMtNDcuMS0xMi4yNjgtODIuMTQ5LTU0Ljc2Ni04Mi4xNDktMTA1LjY0NiAwLTYwLjQwNiA0OS4wNzItMTA5LjUzMSAxMDkuNTMzLTEwOS41MzEgNjAuNDYzIDAgMTA5LjUzMSA0OS4xMjUgMTA5LjUzMSAxMDkuNTMxIDAgNTAuODgxLTM1LjA0OSA5My4zNzktODIuMTQ3IDEwNS42NDZ6TTY5MS4yIDM3My4yOTlWNzgwLjhjMCA5OC44MTYtODAuMzg0IDE3OS4yLTE3OS4yIDE3OS4ycy0xNzkuMi04MC4zODQtMTc5LjItMTc5LjJWMzczLjI5OUMyODUuNTk0IDMyNy4xMTcgMjU2IDI2My4xNjggMjU2IDE5MiAyNTYgNTAuODQyIDM3MC44NDItNjQgNTEyLTY0YzE0MS4xNiAwIDI1NiAxMTQuODQyIDI1NiAyNTYgMCA3MS4xNjgtMjkuNTkyIDEzNS4xMTctNzYuOCAxODEuMjk5ek01MTIgMjAuMTA3Yy04OC40NjUgMC0xNjAuNDU5IDcxLjk5My0xNjAuNDU5IDE2MC40NjEgMCA1OS4xMDEgMzIuNDY1IDExMC4yODkgODAuMjI4IDEzOC4xNTZ2NDc2LjkzOGMwIDQ0LjIzMyAzNS45OTggODAuMjMgODAuMjMgODAuMjNzODAuMjMtMzUuOTk4IDgwLjIzLTgwLjIzVjMxOC43MjRjNDcuNzYzLTI3Ljg2NyA4MC4yMy03OS4wNTUgODAuMjMtMTM4LjE1Ni0uMDAyLTg4LjQ2Ny03MS45OTMtMTYwLjQ2MS0xNjAuNDYxLTE2MC40NjF6Ii8+PGdseXBoIHVuaWNvZGU9Iu6lniIgZ2x5cGgtbmFtZT0idGV4dG8iIGQ9Ik05MTIgNzQyLjg1N2MxMC42NjctMTAuNjY2IDE5LjgxLTI1LjE0MyAyNy40MjktNDMuNDI5czExLjQyOS0zNS4wNDcgMTEuNDI5LTUwLjI4NlYtOS4xNDRjMC0xNS4yMzgtNS4zMzMtMjguMTktMTYtMzguODU3cy0yMy42MTktMTYtMzguODU3LTE2aC03NjhjLTE1LjIzOCAwLTI4LjE5IDUuMzM0LTM4Ljg1NyAxNnMtMTYgMjMuNjE5LTE2IDM4Ljg1N3Y5MTQuMjg2YzAgMTUuMjM4IDUuMzM0IDI4LjE5MSAxNiAzOC44NTdzMjMuNjE5IDE2IDM4Ljg1NyAxNmg1MTJjMTUuMjM4IDAgMzItMy44MDkgNTAuMjg2LTExLjQyOXMzMi43NjItMTYuNzYyIDQzLjQyOS0yNy40MjlsMTc4LjI4Ni0xNzguMjg2ek02NjEuMzkgODU2Ljg5NVY2NzEuMTA0aDE4NS43OTFjLTMuMjk0IDkuNTU0LTYuOTE3IDE2LjMwNi0xMC44NyAyMC4yNTlMNjgxLjY0OSA4NDYuMDI1Yy0zLjk1MyAzLjk1My0xMC43MDYgNy41NzctMjAuMjU5IDEwLjg3ek04NjMuNDI5IDIzLjQyOXY1NzAuODU3SDY0MGMtMTUuMjM4IDAtMjguMTkgNS4zMzQtMzguODU3IDE2cy0xNiAyMy42MTktMTYgMzguODU3Vjg3MkgxNjAuNTcyVjIzLjQyOWg3MDIuODU3ek0yNjQuODI1IDQ5NS4wOTZjMCA2LjAwOCAxLjkzMSAxMC45NDIgNS43OTMgMTQuODA1czguNzk4IDUuNzkzIDE0LjgwNSA1Ljc5M2g0NTMuMTU1YzYuMDA5IDAgMTAuOTQyLTEuOTMxIDE0LjgwNS01Ljc5M3M1Ljc5NC04Ljc5NyA1Ljc5NC0xNC44MDVWNDUzLjljMC02LjAwNy0xLjkzMS0xMC45NDItNS43OTQtMTQuODA1cy04Ljc5Ny01Ljc5My0xNC44MDUtNS43OTNIMjg1LjQyM2MtNi4wMDcgMC0xMC45NDMgMS45MzEtMTQuODA1IDUuNzkzLTMuODYyIDMuODYzLTUuNzkzIDguNzk4LTUuNzkzIDE0LjgwNXY0MS4xOTZ6TTczOC41NzcgMzUwLjkxYzYuMDA5IDAgMTAuOTQyLTEuOTMxIDE0LjgwNS01Ljc5M3M1Ljc5NC04Ljc5NyA1Ljc5NC0xNC44MDV2LTQxLjE5N2MwLTYuMDA3LTEuOTMxLTEwLjk0Mi01Ljc5NC0xNC44MDVzLTguNzk3LTUuNzkzLTE0LjgwNS01Ljc5M0gyODUuNDIyYy02LjAwNyAwLTEwLjk0MyAxLjkzMS0xNC44MDUgNS43OTNzLTUuNzkzIDguNzk4LTUuNzkzIDE0LjgwNXY0MS4xOTdjMCA2LjAwOCAxLjkzMSAxMC45NDIgNS43OTMgMTQuODA1czguNzk4IDUuNzkzIDE0LjgwNSA1Ljc5M2g0NTMuMTU1em0wLTE2NC43ODRjNi4wMDkgMCAxMC45NDItMS45MzEgMTQuODA1LTUuNzk0czUuNzk0LTguNzk3IDUuNzk0LTE0LjgwNXYtNDEuMTk2YzAtNi4wMDgtMS45MzEtMTAuOTQyLTUuNzk0LTE0LjgwNXMtOC43OTctNS43OTQtMTQuODA1LTUuNzk0SDI4NS40MjJjLTYuMDA3IDAtMTAuOTQzIDEuOTMxLTE0LjgwNSA1Ljc5NHMtNS43OTMgOC43OTctNS43OTMgMTQuODA1djQxLjE5NmMwIDYuMDA5IDEuOTMxIDEwLjk0MiA1Ljc5MyAxNC44MDVzOC43OTggNS43OTQgMTQuODA1IDUuNzk0aDQ1My4xNTV6Ii8+PGdseXBoIHVuaWNvZGU9Iu6lnyIgZ2x5cGgtbmFtZT0idXN1YXJpbyIgZD0iTTUxMiA5NTkuOTc4QzIyOS4yNiA5NTkuOTc4IDAgNzMwLjc2MyAwIDQ0OFMyMjkuMjM3LTYzLjk3OCA1MTItNjMuOTc4YzI4Mi43ODUgMCA1MTIgMjI5LjIxNSA1MTIgNTExLjk3OFM3OTQuNzg1IDk1OS45NzggNTEyIDk1OS45Nzh6bTAtMTUzLjA4OGM5My41NTcgMCAxNjkuMzctNzUuODM1IDE2OS4zNy0xNjkuMzQ3IDAtOTMuNTM1LTc1LjgxMy0xNjkuMzQ3LTE2OS4zNy0xNjkuMzQ3LTkzLjUxMiAwLTE2OS4zMjUgNzUuODEzLTE2OS4zMjUgMTY5LjM0NyAwIDkzLjUxMiA3NS44MTMgMTY5LjM0NyAxNjkuMzI1IDE2OS4zNDd6bS0uMTEyLTczNy4wMDljLTkzLjMxIDAtMTc4Ljc3IDMzLjk4Mi0yNDQuNjg4IDkwLjIyOS0xNi4wNTggMTMuNjk2LTI1LjMyMyAzMy43NzktMjUuMzIzIDU0Ljg1MiAwIDk0LjgzOSA3Ni43NTcgMTcwLjc0MiAxNzEuNjE5IDE3MC43NDJoMTk3LjA1NWM5NC44ODQgMCAxNzEuMzQ5LTc1LjkwMyAxNzEuMzQ5LTE3MC43NDJhNzEuOTg4IDcxLjk4OCAwIDAwLTI1LjMwMS01NC44M2MtNjUuODk1LTU2LjI2OS0xNTEuMzc4LTkwLjI1MS0yNDQuNzEtOTAuMjUxeiIvPjxnbHlwaCB1bmljb2RlPSLupaAiIGdseXBoLW5hbWU9InVzdWFyaW8yIiBkPSJNNzA5LjczMiA0MjguMzA5SDY2OC41MmM3OS42MTIgNTEuNTEgMTMyLjQxNSAxNDEuMDggMTMyLjQxNSAyNDIuNzU2IDAgMTU5LjMyMS0xMjkuNjE0IDI4OC45MzQtMjg4LjkzNCAyODguOTM0UzIyMy4wNjcgODMwLjM4NSAyMjMuMDY3IDY3MS4wNjVjMC0xMDEuNjc2IDUyLjc5OC0xOTEuMjQ2IDEzMi40MTUtMjQyLjc1NkgzMTQuMjdjLTEwNS45MDkgMC0xOTIuMDcyLTg2LjE1OC0xOTIuMDcyLTE5Mi4wNjdWLTMyLjA1MmMwLTE3LjY0NyAxNC4zMDYtMzEuOTUxIDMxLjk1MS0zMS45NTFoNzE1LjcwM2MxNy42NDUgMCAzMS45NTEgMTQuMzA0IDMxLjk1MSAzMS45NTF2MjY4LjI5N2MwIDEwNS45MDYtODYuMTYzIDE5Mi4wNjQtMTkyLjA3MiAxOTIuMDY0ek0yODYuOTY5IDY3MS4wNjZjMCAxMjQuMDgyIDEwMC45NDcgMjI1LjAzMiAyMjUuMDMyIDIyNS4wMzIgMTI0LjA4MiAwIDIyNS4wMzItMTAwLjk1IDIyNS4wMzItMjI1LjAzMiAwLTEyNC4wOC0xMDAuOTUtMjI1LjAyNy0yMjUuMDMyLTIyNS4wMjctMTI0LjA4NSAwLTIyNS4wMzIgMTAwLjk0Ny0yMjUuMDMyIDIyNS4wMjd6bTMxOC41MTYtMjczLjM5OWwtOTMuNDg0LTkzLjQ4Ni05My40ODQgOTMuNDg0YzI5LjMzNi0xMC4wNTggNjAuNzgxLTE1LjUyOCA5My40ODQtMTUuNTI4czY0LjE1IDUuNDcgOTMuNDg0IDE1LjUzMXpNODM3LjkwMi0uMDk4aC04Ni45MDd2MTUzLjUxNmMwIDE3LjY0Ny0xNC4zMDYgMzEuOTUxLTMxLjk1MSAzMS45NTFzLTMxLjk1MS0xNC4zMDQtMzEuOTUxLTMxLjk1MVYtLjA5OEgzMzYuOTF2MTUzLjUxNmMwIDE3LjY0Ny0xNC4zMDYgMzEuOTUxLTMxLjk1MSAzMS45NTFzLTMxLjk1MS0xNC4zMDQtMzEuOTUxLTMxLjk1MVYtLjA5OGgtODYuOTA3djIzNi4zNDNjMCA3MC42NjggNTcuNDk3IDEyOC4xNjUgMTI4LjE3IDEyOC4xNjVoNDcuMTMybDEyOC4wMDYtMTI4LjAwNGM2LjIzOS02LjIzOSAxNC40MTYtOS4zNTggMjIuNTkzLTkuMzU4czE2LjM0OSAzLjExOCAyMi41OTMgOS4zNThMNjYyLjYwMSAzNjQuNDFoNDcuMTMyYzcwLjY3MSAwIDEyOC4xNy01Ny40OTEgMTI4LjE3LTEyOC4xNjVWLS4wOTh6Ii8+PGdseXBoIHVuaWNvZGU9Iu6loSIgZ2x5cGgtbmFtZT0iem9vbSIgZD0iTTg2OS4yNjIgMjY3LjY2YzE0OC4yMSAxNDguMjE2IDE0OC4yMDggMzg5LjM4NCAwIDUzNy41OTgtMTQ4LjIxNiAxNDguMjE2LTM4OS4zOCAxNDguMjE2LTUzNy41OTggMC0xMjUuNzM4LTEyNS43NDItMTQ0Ljc4LTMxMi43NS01Ny4xNzgtNDU4Ljc4IDAgMCA2LjI5NC0xMC41NTYtMi4yMDYtMTkuMDU0QzIyMy43OTQgMjc4Ljk0MiA3OC4zMzYgMTMzLjQ4IDc4LjMzNiAxMzMuNDggMzkuNzM0IDk0Ljg4IDMwLjU0NCA0MC45MDQgNjQuNzc2IDYuNjdMNzAuNjcuNzhjMzQuMjMyLTM0LjIzNiA4OC4yMS0yNS4wNDggMTI2LjgxMiAxMy41NTJMMzkxLjAyIDIwNy44N2M4LjkwNiA4LjkwNCAxOS40NiAyLjYxMiAxOS40NiAyLjYxMiAxNDYuMDI4LTg3LjYwNCAzMzMuMDQtNjguNTYyIDQ1OC43ODIgNTcuMTc4em0tNDY3LjQxNiA3MC4xODRjLTEwOS41MTYgMTA5LjUxNi0xMDkuNTE0IDI4Ny43MDguMDAyIDM5Ny4yMjYgMTA5LjUxNiAxMDkuNTE0IDI4Ny43MTIgMTA5LjUxNiAzOTcuMjIyIDAgMTA5LjUxOC0xMDkuNTE0IDEwOS41MTgtMjg3LjcxIDAtMzk3LjIyNi0xMDkuNTEyLTEwOS41MTItMjg3LjcwOC0xMDkuNTEyLTM5Ny4yMjQgMHptMjQuMjU4IDIyMS4xNzRhMzkuMTc0IDM5LjE3NCAwIDAwLTE1LjI3NCAzLjExMmMtMTkuOTUyIDguNDQ0LTI5LjI4NiAzMS40NjQtMjAuODQyIDUxLjQyIDUzLjA3NCAxMjUuNDIyIDE5OC4yOSAxODQuMjgyIDMyMy43MTQgMTMxLjIwOCAxOS45NS04LjQ0NCAyOS4yODQtMzEuNDY0IDIwLjg0LTUxLjQyLTguNDQ4LTE5Ljk1NC0zMS40Ni0yOS4yODQtNTEuNDI0LTIwLjg0LTg1LjU3MiAzNi4yMDgtMTg0LjY1Ni0zLjk1NC0yMjAuODY0LTg5LjUyNC02LjMzMi0xNC45NjQtMjAuODU4LTIzLjk1Ni0zNi4xNS0yMy45NTZ6Ii8+PGdseXBoIHVuaWNvZGU9Iu6loiIgZ2x5cGgtbmFtZT0iem9vbS1leHRlbnNpb24iIGQ9Ik0xMDAyLjQzNCA3NTUuMzM5VjEzNi40NjhjMC0yMi4zOTMtNy45NzMtNDEuNTYzLTIzLjkyLTU3LjUxMS0xNS45NDYtMTUuOTQ2LTM1LjExNi0yMy45MTktNTcuNTEtMjMuOTE5SDEwNi42OThjLTIyLjM5MyAwLTQxLjU2MyA3Ljk3My01Ny41MTEgMjMuOTE5LTE1Ljk0NiAxNS45NDYtMjMuOTE5IDM1LjExNy0yMy45MTkgNTcuNTExdjYxOC44NzFjMCAyMi4zOTMgNy45NzMgNDEuNTYzIDIzLjkxOSA1Ny41MTFzMzUuMTE3IDIzLjkyIDU3LjUxMSAyMy45Mmg4MTQuMzA2YzIyLjM5MyAwIDQxLjU2My03Ljk3MyA1Ny41MS0yMy45MnMyMy45Mi0zNS4xMTggMjMuOTItNTcuNTExem0tOTEuNDc2LjY0OUgxMTYuNzQyYy00LjMwMiAwLTguMDI1LTEuNTM0LTExLjE2OS00LjYwM3MtNC43MTYtNi43MDItNC43MTYtMTAuOTAxVjE1MS4zMjFjMC00LjE5OCAxLjU3Mi03LjgzMiA0LjcxNi0xMC45MDFzNi44NjYtNC42MDMgMTEuMTY5LTQuNjAzaDc5NC4yMTdjNC4zMDIgMCA4LjAyNCAxLjUzNCAxMS4xNjkgNC42MDNzNC43MTcgNi43MDIgNC43MTcgMTAuOTAxdjU4OS4xNjVjMCA0LjE5OC0xLjU3MyA3LjgzMy00LjcxNyAxMC45MDItMy4xNDUgMy4wNjctNi44NjcgNC42MDEtMTEuMTY5IDQuNjAxek02NTUuOTEyIDM4MS41MjVjMTQuMzM3IDE0LjMzOCAyNS4wOTIgMzAuNTMgMzIuMjYxIDQ4LjU2NyA3LjE2NSAxOC4wMzYgMTAuNzQ5IDM2LjQyMiAxMC43NDkgNTUuMTUzIDAgMTguNzMzLTMuNTgyIDM3LjIzNC0xMC43NDkgNTUuNTAyLTcuMTY5IDE4LjI2Ny0xNy45MjYgMzQuNTcxLTMyLjI2MSA0OC45MTEtMTQuMzM3IDE0LjMzNy0zMC41MjkgMjQuOTc3LTQ4LjU2NCAzMS45MTMtMTguMDM4IDYuOTM4LTM2LjUzOCAxMC40MDgtNTUuNTAyIDEwLjQwOHMtMzcuNDctMy40Ny01NS41MDMtMTAuNDA4Yy0xOC4wMzgtNi45MzctMzQuMjI0LTE3LjU3OC00OC41NjMtMzEuOTEzLTE0LjM0LTE0LjMzOS0yNS4wOTItMzAuNjQyLTMyLjI2LTQ4LjkxMXMtMTAuNzU1LTM2Ljc3My0xMC43NTUtNTUuNTAyYzAtMTguNzMxIDMuNTg2LTM3LjExNyAxMC43NTUtNTUuMTUzIDcuMTY4LTE4LjAzOCAxNy45Mi0zNC4yMjYgMzIuMjYtNDguNTY3IDE0LjM0LTE0LjMzOSAzMC41MjUtMjUuMDkzIDQ4LjU2My0zMi4yNjIgMTguMDM5LTcuMTY1IDM2LjU0MS0xMC43NDkgNTUuNTAzLTEwLjc0OSAxOC45NjQgMCAzNy40NjUgMy41ODMgNTUuNTAyIDEwLjc0OSAxOC4wMzkgNy4xNzEgMzQuMjI3IDE3LjkyMyA0OC41NjQgMzIuMjYyem00Ni43OTYgMjU0Ljg2MmMyMC44NjQtMjAuODU5IDM2LjUwNi00NC40MjIgNDYuOTM3LTcwLjY4MiAxMC40MzEtMjYuMjYyIDE1LjY0Ni01Mi45ODggMTUuNjQ2LTgwLjE4MXMtNS4yMTUtNTMuOTE4LTE1LjY0Ni04MC4xNzljLTEwLjQzMS0yNi4yNjItMjYuMDc1LTQ5LjgyMi00Ni45MzctNzAuNjgyLTE2Ljc1OS0xNi43NjMtMzUuMzg3LTMwLjE3My01NS44NzUtNDAuMjMxLTIwLjQ4Ni0xMC4wNTYtNDEuNzE3LTE2Ljc1OC02My42OTktMjAuMTExLTIxLjk3NS0zLjM1NS00NC4wNDgtMy4xNy02Ni4yMS41NTUtMjIuMTY0IDMuNzI1LTQzLjMwOCAxMC44MDMtNjMuNDE5IDIxLjIzM2wtOTYuMTA2LTk2LjEwNmMtNS41ODktNS41ODYtMTEuNzMzLTkuNjgxLTE4LjQ0MS0xMi4yOTItNi43MDMtMi42MDYtMTMuNjg5LTMuOTExLTIwLjk1MS0zLjkxMXMtMTQuMjQ5IDEuMzA1LTIwLjk1MiAzLjkxMWMtNi43MDcgMi42MDgtMTIuODUzIDYuNzA1LTE4LjQ0IDEyLjI5Mi01LjU4NiA1LjU4OS05LjY4NiAxMS43MzUtMTIuMjk0IDE4LjQzOS0yLjYwNiA2LjcwNi0zLjkxMSAxMy42OS0zLjkxMSAyMC45NTNzMS4zMDUgMTQuMjQ2IDMuOTExIDIwLjk0OWMyLjYwNyA2LjcwNyA2LjcwNSAxMi44NTEgMTIuMjk0IDE4LjQzOWw5Mi43NTIgOTIuNzU0Yy0xMy4wMzggMjAuNDg3LTIyLjE2NCA0Mi40NjYtMjcuMzc4IDY1LjkzNS01LjIxNSAyMy40NjYtNi42MTQgNDYuOTM0LTQuMTkyIDcwLjM5OSAyLjQyMiAyMy40NjcgOC43NTQgNDYuMjg1IDE4Ljk5OCA2OC40NDcgMTAuMjQ0IDIyLjE2NCAyNC4zMDUgNDIuMTg2IDQyLjE4NiA2MC4wNjYgMjAuODYxIDIwLjQ4OSA0NC40MiAzNS45NDcgNzAuNjgzIDQ2LjM3OCAyNi4yNjEgMTAuNDMyIDUyLjk4OSAxNS42NDYgODAuMTgyIDE1LjY0NiAyNy4xOSAwIDUzLjkyLTUuMjE0IDgwLjE3OS0xNS42NDQgMjYuMjY1LTEwLjQzIDQ5LjgyNC0yNS44ODkgNzAuNjgzLTQ2LjM3N3oiLz48Z2x5cGggdW5pY29kZT0i7qWjIiBnbHlwaC1uYW1lPSJ6b29tLW1hcyIgZD0iTTg2OS4yNjIgMjY3LjY2YzE0OC4yMSAxNDguMjE2IDE0OC4yMSAzODkuMzg0IDAgNTM3LjU5OC0xNDguMjE0IDE0OC4yMTYtMzg5LjM4MiAxNDguMjE2LTUzNy41OTggMC0xMjUuNzM4LTEyNS43NDItMTQ0Ljc4LTMxMi43NS01Ny4xNzgtNDU4Ljc4IDAgMCA2LjI5NC0xMC41NTQtMi4yMDYtMTkuMDU0QzIyMy43OTQgMjc4Ljk0MiA3OC4zMzYgMTMzLjQ4IDc4LjMzNiAxMzMuNDggMzkuNzM0IDk0Ljg4IDMwLjU0NCA0MC45MDQgNjQuNzc2IDYuNjdMNzAuNjcuNzhjMzQuMjMyLTM0LjIzNiA4OC4yMS0yNS4wNDggMTI2LjgxMiAxMy41NTIgMCAwIDE0NS4xNTIgMTQ1LjE1MiAxOTMuNTM2IDE5My41MzggOC45MDggOC45MDQgMTkuNDYgMi42MTIgMTkuNDYgMi42MTIgMTQ2LjAyOC04Ny42MDQgMzMzLjA0Mi02OC41NjIgNDU4Ljc4NCA1Ny4xNzh6bS00NjcuNDE2IDcwLjE4NGMtMTA5LjUxNiAxMDkuNTE2LTEwOS41MTQgMjg3LjcwOC4wMDIgMzk3LjIyNiAxMDkuNTE2IDEwOS41MTQgMjg3LjcxNiAxMDkuNTE2IDM5Ny4yMjQgMCAxMDkuNTE4LTEwOS41MTQgMTA5LjUxOC0yODcuNzEgMC0zOTcuMjI2LTEwOS41MTQtMTA5LjUxNC0yODcuNzEtMTA5LjUxNC0zOTcuMjI2IDB6TTc1MC44ODggNTkxLjJoLTg1LjA1NHMtOC4xMzYuNjQtOC4xMzYgOC45NDJ2ODQuMjVjMCAxNi41OTgtMTMuNTgyIDMwLjE4LTMwLjE4MiAzMC4xOGgtNTAuMDI0Yy0xNi41OTggMC0zMC4xOC0xMy41ODItMzAuMTgtMzAuMTh2LTgzLjY4NGMwLTguODY2LTguNjA4LTkuNTA0LTguNjA4LTkuNTA0aC04NC41ODJjLTE2LjU5OCAwLTMwLjE4LTEzLjU4Mi0zMC4xOC0zMC4xOFY1MTFjMC0xNi41OTggMTMuNTgyLTMwLjE4IDMwLjE4LTMwLjE4aDgzLjk1MnM5LjIzNi0uMjYyIDkuMjM2LTkuMDY2di04NC4xMjZjMC0xNi41OTggMTMuNTgyLTMwLjE4IDMwLjE4LTMwLjE4aDUwLjAyNGMxNi42IDAgMzAuMTgyIDEzLjU4MiAzMC4xODIgMzAuMTh2ODQuNjNjMCA4LjExNCA5LjI3MiA4LjU2MiA5LjI3MiA4LjU2Mmg4My45MjJjMTYuNiAwIDMwLjE4IDEzLjU4MiAzMC4xOCAzMC4xOHY1MC4wMjRjLS4wMDIgMTYuNTk0LTEzLjU4NCAzMC4xNzYtMzAuMTgyIDMwLjE3NnoiLz48Z2x5cGggdW5pY29kZT0i7qWkIiBnbHlwaC1uYW1lPSJ6b29tLW1lbm9zIiBkPSJNODY5LjI2MiAyNjcuNjZjMTQ4LjIxIDE0OC4yMTYgMTQ4LjIxIDM4OS4zODQgMCA1MzcuNTk4LTE0OC4yMTQgMTQ4LjIxNi0zODkuMzggMTQ4LjIxNi01MzcuNTk4IDAtMTI1LjczOC0xMjUuNzQyLTE0NC43ODItMzEyLjc1LTU3LjE4LTQ1OC43OCAwIDAgNi4yOTQtMTAuNTU0LTIuMjA2LTE5LjA1NEMyMjMuNzk0IDI3OC45NDIgNzguMzM0IDEzMy40OCA3OC4zMzQgMTMzLjQ4IDM5LjczMiA5NC44OCAzMC41NCA0MC45MDQgNjQuNzc0IDYuNjdMNzAuNjY4Ljc4QzEwNC45LTMzLjQ1NiAxNTguODgtMjQuMjY4IDE5Ny40OCAxNC4zMzJMMzkxLjAxOCAyMDcuODdjOC45MDYgOC45MDQgMTkuNDYgMi42MTIgMTkuNDYgMi42MTIgMTQ2LjAyOC04Ny42MDQgMzMzLjA0Mi02OC41NjIgNDU4Ljc4NCA1Ny4xNzh6bS00NjcuNDE2IDcwLjE4NGMtMTA5LjUxNiAxMDkuNTE2LTEwOS41MTQgMjg3LjcwOCAwIDM5Ny4yMjYgMTA5LjUxNiAxMDkuNTE0IDI4Ny43MTYgMTA5LjUxNiAzOTcuMjI0IDAgMTA5LjUxNi0xMDkuNTE0IDEwOS41MTYtMjg3LjcxIDAtMzk3LjIyNi0xMDkuNTEyLTEwOS41MTQtMjg3LjcwOC0xMDkuNTE0LTM5Ny4yMjQgMHptMzc5LjIyMiAxNzMuMTUyYzAtMTYuNTk4LTEzLjU4LTMwLjE4LTMwLjE4LTMwLjE4SDQ1NC4xMmMtMTYuNTk4IDAtMzAuMTggMTMuNTgyLTMwLjE4IDMwLjE4djUwLjAyNGMwIDE2LjU5OCAxMy41ODIgMzAuMTggMzAuMTggMzAuMThoMjk2Ljc2OGMxNi42IDAgMzAuMTgtMTMuNTgyIDMwLjE4LTMwLjE4di01MC4wMjR6Ii8+PGdseXBoIHVuaWNvZGU9Iu6lpSIgZ2x5cGgtbmFtZT0icGluNSIgaG9yaXotYWR2LXg9IjkzOSIgZD0iTTcyNy4wNTUgODM2LjgxNGMtNjYuMDc5IDY2LjE1Mi0xNTcuNzU4IDEwNy4yNzMtMjU4LjUzMiAxMDcuMjczSDQ2OC4zOGMtMTAwLjc3NCAwLTE5Mi40NTItNDEuMTIxLTI1OC41MzItMTA3LjI3My02Ni4xNTItNjYuMDc3LTEwNy4yNzMtMTU3Ljc1OC0xMDcuMjczLTI1OC41M3YtLjA2OWMuMDE5LTEzLjcxMSAxLjI0MS0yNy41NzYgMy40NzMtNDEuNTk4IDIuMjM4LTE0LjAwNCA1LjQ2My0yOC4xNTggOS40OC00Mi40NjIgNy4wNTQtMjQuOTY2IDE2LjU1Ny01MC40MTkgMjcuODk1LTc1LjkzMiAxMS4zMTktMjUuNTExIDI0LjQzNy01MS4xMSAzOC43NTYtNzYuMzk5IDIxLjUyLTM3Ljg4MyA0NS42OTgtNzQuOTkzIDcwLjY2NC0xMDkuNTE2IDI0Ljk2Ni0zNC41MjEgNTAuNzAzLTY2LjQ2OSA3NS4zMzEtOTQuMDA5IDEyLjM1Mi0xMy43OTIgMjQuMzg1LTI2LjQ0OSAzNi4wNDItMzcuODQyIDExLjY0LTExLjM5NCAyMi44NzktMjEuNTEyIDMzLjY1OC0zMC4xODUgMTAuODMzLTguNjkxIDIxLjE1OC0xNS45NzcgMzEuOTEyLTIxLjgxMyA1LjQyMS0yLjg5MSAxMC45NzgtNS40NTcgMTcuMTc2LTcuNTA5IDYuMTk1LTIuMDAxIDEzLjA5OS0zLjU5OSAyMS40ODYtMy42MzhhNjkuNTk0IDY5LjU5NCAwIDAxMTYuOTUzIDIuMjY2YzUuMDEyIDEuMzMzIDkuNSAzLjExNiAxMy44MzUgNC45OTMgNy45NzggMy42MzggMTUuNTI2IDguMDUzIDIzLjA3MSAxMy4xODkgNy41MjcgNS4xNDMgMTUuMDU3IDExLjAxOSAyMi45MzkgMTcuNjA4IDEzLjY0OSAxMS41MTEgMjguMTA3IDI1LjI1MiA0My4wODEgNDAuODY4IDE0Ljk2OSAxNS41OTYgMzAuNDcgMzMuMDc2IDQ2LjIzOSA1Mi4wNzMgMjMuNTc5IDI4LjQ3NyA0Ny41ODggNjAuMjU5IDcwLjQzNCA5My44NTkgMjIuODY2IDMzLjU5NiA0NC41NjQgNjkuMDIgNjMuNTA1IDEwNC44MDMgOS40NjEgMTcuODg0IDE4LjI0NiAzNS44NjUgMjYuMTEyIDUzLjgxOSA3Ljg4MiAxNy45MjcgMTQuODY3IDM1LjgxNyAyMC42OTggNTMuNTE4IDUuODI3IDE3LjcyMiAxMC41NzYgMzUuMjc0IDEzLjg2MSA1Mi42IDMuMjg1IDE3LjMyMyA1LjEyMyAzNC40NDYgNS4xNjIgNTEuMzAzdi4wNjljLjAwNCAxMDAuNzc2LTQxLjEyOSAxOTIuNDU4LTEwNy4yODEgMjU4LjUzNHpNNDY4LjQ0OCAzNTAuNDI4Yy0xMzguMTE5IDAtMjUwLjA5MyAxMTEuOTctMjUwLjA5MyAyNTAuMDk0IDAgMTM4LjEyMSAxMTEuOTcgMjUwLjA5MyAyNTAuMDkzIDI1MC4wOTMgMTM4LjEyNSAwIDI1MC4wOTQtMTExLjk2OCAyNTAuMDk0LTI1MC4wOTMtLjAwMi0xMzguMTI1LTExMS45Ny0yNTAuMDk0LTI1MC4wOTQtMjUwLjA5NHoiLz48Z2x5cGggdW5pY29kZT0i7qWmIiBnbHlwaC1uYW1lPSJwaW4tbnVldm8yIiBob3Jpei1hZHYteD0iOTM5IiBkPSJNNzI3LjA1MyA4MzYuODE2Yy02Ni4wNzcgNjYuMTUyLTE1Ny43NTggMTA3LjI3Ny0yNTguNTI5IDEwNy4yNzdoLS4xNDZjLTEwMC43NzEgMC0xOTIuNDUtNDEuMTI1LTI1OC41MjktMTA3LjI3Ny02Ni4xNTItNjYuMDc3LTEwNy4yNzctMTU3Ljc1OC0xMDcuMjc3LTI1OC41Mjd2LS4wNzNjLjAxOS0xMy43MDcgMS4yMzktMjcuNTc2IDMuNDczLTQxLjU5OCAyLjIzNi0xNC4wMDQgNS40NjMtMjguMTU4IDkuNDgtNDIuNDYyIDcuMDU2LTI0Ljk2NiAxNi41NTctNTAuNDE5IDI3Ljg5NS03NS45MzIgMTEuMzE5LTI1LjUxMSAyNC40MzktNTEuMTEyIDM4Ljc2LTc2LjM5OSAyMS41MTYtMzcuODgzIDQ1LjY5NC03NC45OTMgNzAuNjYxLTEwOS41MTYgMjQuOTY2LTM0LjUyMSA1MC43MDMtNjYuNDY5IDc1LjMzMS05NC4wMDkgMTIuMzUyLTEzLjc5MyAyNC4zODUtMjYuNDQ5IDM2LjA0Mi0zNy44NDIgMTEuNjQtMTEuMzk0IDIyLjg4MS0yMS41MTIgMzMuNjU4LTMwLjE4NSAxMC44MzMtOC42OTEgMjEuMTU4LTE1Ljk3NyAzMS45MTItMjEuODEzIDUuNDIzLTIuODkxIDEwLjk4LTUuNDU5IDE3LjE3Ni03LjUwOSA2LjE5NS0yLjAwNSAxMy4xMDEtMy42IDIxLjQ5LTMuNjM4IDYuNDAxLjA3NSAxMS45Mi45NTkgMTYuOTUxIDIuMjY2IDUuMDEyIDEuMzMzIDkuNDk5IDMuMTE2IDEzLjgzNSA0Ljk5MyA3Ljk3OCAzLjYzOCAxNS41MjIgOC4wNTMgMjMuMDcxIDEzLjE5MyA3LjUyNyA1LjE0MyAxNS4wNTUgMTEuMDE5IDIyLjkzOSAxNy42MDggMTMuNjQ3IDExLjUxMSAyOC4xMDUgMjUuMjUyIDQzLjA4MSA0MC44NjggMTQuOTY1IDE1LjU5NyAzMC40NjggMzMuMDc2IDQ2LjIzNSA1Mi4wNzMgMjMuNTgxIDI4LjQ3NyA0Ny41OSA2MC4yNTkgNzAuNDM0IDkzLjg1OSAyMi44NjYgMzMuNiA0NC41NjQgNjkuMDIyIDYzLjUwNSAxMDQuODAzIDkuNDYxIDE3Ljg4OCAxOC4yNDYgMzUuODY5IDI2LjExMiA1My44MTkgNy44ODIgMTcuOTI3IDE0Ljg2NyAzNS44MTcgMjAuNzAyIDUzLjUxOCA1LjgyMyAxNy43MjIgMTAuNTcyIDM1LjI3NCAxMy44NTcgNTIuNiAzLjI4NSAxNy4zMjQgNS4xMjMgMzQuNDQ2IDUuMTYyIDUxLjMwM3YuMDczYy4wMDQgMTAwLjc2OS00MS4xMjcgMTkyLjQ1LTEwNy4yNzkgMjU4LjUyN3ptLTI1OC42MDUtNDg2LjM5Yy0xMzguMTIzIDAtMjUwLjA5NCAxMTEuOTctMjUwLjA5NCAyNTAuMDk0czExMS45NyAyNTAuMDk0IDI1MC4wOTQgMjUwLjA5NCAyNTAuMDk0LTExMS45NyAyNTAuMDk0LTI1MC4wOTRjMC0xMzguMTI1LTExMS45Ny0yNTAuMDk0LTI1MC4wOTQtMjUwLjA5NHpNNDg4LjA1MyA3NTMuNGMtNS40NjggNS4wMzYtMTIuNjI2IDguMjg2LTIwLjY0OSA4LjI3MS04LjAxMiAwLTE1LjE4My0zLjIzOC0yMC42NDktOC4yNzEtNi4wODYtNS41OTItMTAuMDM0LTEzLjQ3Ni0xMC4wMTgtMjIuMzk3bC4wMTMtOTkuNDM2LTk5LjQzNi4wMTNjLTguOTM1IDAtMTYuNzg4LTMuOTUtMjIuMzk3LTEwLjAyLTUuMDM2LTUuNDY2LTguMjg0LTEyLjYyNi04LjI3MS0yMC42NDcgMC04LjAxNiAzLjIzOC0xNS4xODMgOC4yNzEtMjAuNjQ5IDUuNTkyLTYuMDg4IDEzLjQ2MS0xMC4wMTggMjIuMzk3LTEwLjAxOGw5OS40MzYtLjAxOXYtOTkuNDE5YzAtOC45MzcgMy45NS0xNi43ODQgMTAuMDItMjIuMzk3IDUuNDY0LTUuMDM1IDEyLjYyOC04LjI4OCAyMC42NDctOC4yNzEgOC4wMTQgMCAxNS4xODMgMy4yNDQgMjAuNjQ5IDguMjcxIDYuMDg4IDUuNTkyIDEwLjAyIDEzLjQ1OSAxMC4wMiAyMi4zOTd2OTkuNDE5aDk5LjQ1MWM4LjkzNyAwIDE2Ljc4NiAzLjk1IDIyLjM5NyAxMC4wMjQgNS4wMzYgNS40NjMgOC4yODQgMTIuNjI0IDguMjcxIDIwLjY0OSAwIDguMDEtMy4yNCAxNS4xODEtOC4yNzEgMjAuNjQ3LTUuNTkyIDYuMDg0LTEzLjQ1OSAxMC4wMi0yMi4zOTcgMTAuMDJoLTk5LjQ1MXY5OS40MjFjLjAwMiA4LjkzNS0zLjkzMyAxNi44MDMtMTAuMDM0IDIyLjQxMnoiLz48Z2x5cGggdW5pY29kZT0i7qWnIiBnbHlwaC1uYW1lPSJwaW4tc2VsZWNjaW9uYWRvIiBob3Jpei1hZHYteD0iOTM5IiBkPSJNNzI3LjA1NSA4MzYuODE0Yy02Ni4wNzkgNjYuMTUyLTE1Ny43NTggMTA3LjI3NS0yNTguNTMgMTA3LjI3NUg0NjguMzgxYy0xMDAuNzcyIDAtMTkyLjQ1Mi00MS4xMjMtMjU4LjUzLTEwNy4yNzUtNjYuMTUyLTY2LjA3Ny0xMDcuMjc1LTE1Ny43NTgtMTA3LjI3NS0yNTguNTI5di0uMDcxYy4wMTktMTMuNzA5IDEuMjQxLTI3LjU3NiAzLjQ3My00MS41OTggMi4yMzgtMTQuMDA0IDUuNDYzLTI4LjE1OCA5LjQ4LTQyLjQ2MiA3LjA1NC0yNC45NjYgMTYuNTU3LTUwLjQxOSAyNy44OTUtNzUuOTMyIDExLjMxOS0yNS41MTEgMjQuNDM3LTUxLjExIDM4Ljc1OC03Ni4zOTkgMjEuNTE4LTM3Ljg4MyA0NS42OTYtNzQuOTkzIDcwLjY2My0xMDkuNTE2IDI0Ljk2Ni0zNC41MjEgNTAuNzAzLTY2LjQ2OSA3NS4zMzEtOTQuMDA5IDEyLjM1Mi0xMy43OTIgMjQuMzg1LTI2LjQ0OSAzNi4wNDItMzcuODQyIDExLjY0LTExLjM5NCAyMi44ODEtMjEuNTEyIDMzLjY1OC0zMC4xODUgMTAuODMzLTguNjkxIDIxLjE1OC0xNS45NzcgMzEuOTEyLTIxLjgxMyA1LjQyMS0yLjg5MSAxMC45NzgtNS40NTcgMTcuMTc2LTcuNTA5IDYuMTk1LTIuMDAzIDEzLjA5OS0zLjU5OSAyMS40ODgtMy42MzggNi40MDEuMDc1IDExLjkyLjk1OSAxNi45NTMgMi4yNjYgNS4wMTIgMS4zMzMgOS40OTkgMy4xMTYgMTMuODM1IDQuOTkzIDcuOTc4IDMuNjM4IDE1LjUyNCA4LjA1MyAyMy4wNzEgMTMuMTkxIDcuNTI3IDUuMTQzIDE1LjA1NyAxMS4wMTkgMjIuOTM5IDE3LjYwOCAxMy42NDcgMTEuNTA5IDI4LjEwNSAyNS4yNTIgNDMuMDgxIDQwLjg2OCAxNC45NjcgMTUuNTk2IDMwLjQ3IDMzLjA3NiA0Ni4yMzcgNTIuMDczIDIzLjU3OSAyOC40NzcgNDcuNTg4IDYwLjI1OSA3MC40MzQgOTMuODU5IDIyLjg2NiAzMy41OTggNDQuNTY0IDY5LjAyIDYzLjUwNSAxMDQuODAzIDkuNDYxIDE3Ljg4NiAxOC4yNDYgMzUuODY3IDI2LjExMiA1My44MTkgNy44ODIgMTcuOTI3IDE0Ljg2NyAzNS44MTcgMjAuNyA1My41MTggNS44MjUgMTcuNzIyIDEwLjU3NCAzNS4yNzQgMTMuODU5IDUyLjYgMy4yODUgMTcuMzIzIDUuMTIzIDM0LjQ0NiA1LjE2MiA1MS4zMDN2LjA3MWMuMDAyIDEwMC43NzItNDEuMTI5IDE5Mi40NTQtMTA3LjI4MSAyNTguNTN6TTQ2OC40NDggMzUwLjQyOGMtMTM4LjEyMSAwLTI1MC4wOTMgMTExLjk3LTI1MC4wOTMgMjUwLjA5NCAwIDEzOC4xMjEgMTExLjk3IDI1MC4wOTMgMjUwLjA5MyAyNTAuMDkzczI1MC4wOTQtMTExLjk3IDI1MC4wOTQtMjUwLjA5M2MtLjAwMi0xMzguMTI1LTExMS45NzItMjUwLjA5NC0yNTAuMDk0LTI1MC4wOTR6bTE1NC4zNTYgMjUwLjA5M2MwLTg1LjI0OS02OS4xMDgtMTU0LjM1Ny0xNTQuMzU3LTE1NC4zNTdTMzE0LjA5IDUxNS4yNzIgMzE0LjA5IDYwMC41MjFzNjkuMTA4IDE1NC4zNTcgMTU0LjM1NyAxNTQuMzU3IDE1NC4zNTctNjkuMTA4IDE1NC4zNTctMTU0LjM1N3oiLz48Z2x5cGggdW5pY29kZT0i7qWoIiBnbHlwaC1uYW1lPSJicnVqdWxhLW5vcnRlIiBkPSJNMTU2LjMzNSA4MTYuMzAyQy00Ny4wNzQgNjE5Ljg3Mi01Mi43MyAyOTUuNzQyIDE0My42OTggOTIuMzM1czUyMC41Ni0yMDkuMDY1IDcyMy45NjctMTIuNjM3YzIwMy40MDkgMTk2LjQzIDIwOS4wNjUgNTIwLjU2IDEyLjYzNyA3MjMuOTY3cy01MjAuNTU4IDIwOS4wNjYtNzIzLjk2NyAxMi42Mzd6TTgwMC43OTkgMTQ4Ljk0QzYzNS42NDQtMTAuNTQ5IDM3Mi40MjktNS45NTQgMjEyLjk0MSAxNTkuMjAxYy0xNTkuNDkgMTY1LjE1Ny0xNTQuODk2IDQyOC4zNzEgMTAuMjYgNTg3Ljg2IDE2NS4xNTcgMTU5LjQ5IDQyOC4zNzEgMTU0Ljg5NiA1ODcuODYxLTEwLjI2MXMxNTQuODk0LTQyOC4zNy0xMC4yNjMtNTg3Ljg2em0tMjk0LjcxNS0zOC4zMDdzMTI3LjIgMjU4LjU4IDEyOC41ODIgMzM1LjIyNmMxLjMzOSA3Ni42OTEtMTE2LjgwNSAzMzkuNTEyLTExNi44MDUgMzM5LjUxMnMtMTI3LjItMjU4LjU4LTEyOC41MzktMzM1LjIyOWMtMS4zMzktNzYuNjQ5IDExNi43NjEtMzM5LjUwOCAxMTYuNzYxLTMzOS41MDh6bS00NC4yNzEgMzI0LjE5MWw5OS44NzYtMS43NDNjMjQuOTctLjQzNy01Mi45OS0xNzMuOTExLTUyLjk5LTE3My45MTFzLTcxLjg1NSAxNzYuMDkyLTQ2Ljg4NiAxNzUuNjU1eiIvPjwvZm9udD48L2RlZnM+PC9zdmc+) format("svg");font-weight:400;font-style:normal;font-display:block}[class*=" g-cartografia-"],[class^=g-cartografia-]{font-family:g-cartografia!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.g-cartografia-alerta:before{content:"\e900"}.g-cartografia-ayuda:before{content:"\e901"}.g-cartografia-bandera:before{content:"\e902"}.g-cartografia-brujula:before{content:"\e903"}.g-cartografia-cancelar:before{content:"\e904"}.g-cartografia-cancelar2:before{content:"\e905"}.g-cartografia-capas:before{content:"\e906"}.g-cartografia-capas2:before{content:"\e907"}.g-cartografia-check:before{content:"\e908"}.g-cartografia-check2:before{content:"\e909"}.g-cartografia-check3:before{content:"\e90a"}.g-cartografia-check4:before{content:"\e90b"}.g-cartografia-check5:before{content:"\e90c"}.g-cartografia-comentarios:before{content:"\e90d"}.g-cartografia-descargar:before{content:"\e90e"}.g-cartografia-editar:before{content:"\e90f"}.g-cartografia-editar2:before{content:"\e910"}.g-cartografia-escala:before{content:"\e911"}.g-cartografia-escala2:before{content:"\e912"}.g-cartografia-escala3:before{content:"\e913"}.g-cartografia-flecha:before{content:"\e914"}.g-cartografia-flecha-abajo:before{content:"\e915"}.g-cartografia-flecha-abajo2:before{content:"\e916"}.g-cartografia-flecha-arriba:before{content:"\e917"}.g-cartografia-flecha-arriba2:before{content:"\e918"}.g-cartografia-flecha-derecha:before{content:"\e919"}.g-cartografia-flecha-derecha2:before{content:"\e91a"}.g-cartografia-flecha-derecha3:before{content:"\e91b"}.g-cartografia-flecha-deshacer:before{content:"\e91c"}.g-cartografia-flecha-izquierda:before{content:"\e91d"}.g-cartografia-flecha-izquierda2:before{content:"\e91e"}.g-cartografia-flecha-izquierda3:before{content:"\e91f"}.g-cartografia-flecha-link:before{content:"\e920"}.g-cartografia-flechas-mover:before{content:"\e921"}.g-cartografia-gps:before{content:"\e922"}.g-cartografia-gps2:before{content:"\e923"}.g-cartografia-gps3:before{content:"\e924"}.g-cartografia-gps4:before{content:"\e925"}.g-cartografia-guardar:before{content:"\e926"}.g-cartografia-herramienta:before{content:"\e927"}.g-cartografia-impresora:before{content:"\e928"}.g-cartografia-info:before{content:"\e929"}.g-cartografia-linea:before{content:"\e92a"}.g-cartografia-lineas:before{content:"\e92b"}.g-cartografia-lista:before{content:"\e92c"}.g-cartografia-localizacion:before{content:"\e92d"}.g-cartografia-localizacion2:before{content:"\e92e"}.g-cartografia-localizacion3:before{content:"\e92f"}.g-cartografia-localizacion4:before{content:"\e930"}.g-cartografia-mano:before{content:"\e931"}.g-cartografia-mano2:before{content:"\e932"}.g-cartografia-mapa:before{content:"\e933"}.g-cartografia-mas:before{content:"\e934"}.g-cartografia-mas2:before{content:"\e935"}.g-cartografia-medir-area:before{content:"\e936"}.g-cartografia-medir-linea:before{content:"\e937"}.g-cartografia-menos:before{content:"\e938"}.g-cartografia-menos2:before{content:"\e939"}.g-cartografia-menu:before{content:"\e93a"}.g-cartografia-mundo:before{content:"\e93b"}.g-cartografia-mundo2:before{content:"\e93c"}.g-cartografia-opciones:before{content:"\e93d"}.g-cartografia-papelera:before{content:"\e93e"}.g-cartografia-pin:before{content:"\e93f"}.g-cartografia-pin-nuevo:before{content:"\e940"}.g-cartografia-pin2:before{content:"\e941"}.g-cartografia-pin3:before{content:"\e942"}.g-cartografia-pin4:before{content:"\e943"}.g-cartografia-poligono:before{content:"\e944"}.g-cartografia-posicion:before{content:"\e945"}.g-cartografia-posicion2:before{content:"\e946"}.g-cartografia-posicion3:before{content:"\e947"}.g-cartografia-posicion4:before{content:"\e948"}.g-cartografia-posicion5:before{content:"\e949"}.g-cartografia-posicion6:before{content:"\e94a"}.g-cartografia-posicion7:before{content:"\e94b"}.g-cartografia-prismaticos:before{content:"\e94c"}.g-cartografia-regla:before{content:"\e94d"}.g-cartografia-reglas:before{content:"\e94e"}.g-cartografia-ruta:before{content:"\e94f"}.g-cartografia-spinner:before{content:"\e950"}.g-cartografia-spinner2 .path1:before{content:"\e951";color:#6b6b6b}.g-cartografia-spinner2 .path2:before{content:"\e952";margin-left:-1em;color:#6b6b6b;opacity:.1}.g-cartografia-spinner2 .path3:before{content:"\e953";margin-left:-1em;color:#6b6b6b;opacity:.2}.g-cartografia-spinner2 .path4:before{content:"\e954";margin-left:-1em;color:#6b6b6b;opacity:.3}.g-cartografia-spinner2 .path5:before{content:"\e955";margin-left:-1em;color:#6b6b6b;opacity:.4}.g-cartografia-spinner2 .path6:before{content:"\e956";margin-left:-1em;color:#6b6b6b;opacity:.5}.g-cartografia-spinner2 .path7:before{content:"\e957";margin-left:-1em;color:#6b6b6b;opacity:.6}.g-cartografia-spinner2 .path8:before{content:"\e958";margin-left:-1em;color:#6b6b6b;opacity:.7}.g-cartografia-spinner2 .path9:before{content:"\e959";margin-left:-1em;color:#6b6b6b;opacity:.8}.g-cartografia-spinner2 .path10:before{content:"\e95a";margin-left:-1em;color:#6b6b6b;opacity:.9}.g-cartografia-subir:before{content:"\e95b"}.g-cartografia-tamano:before{content:"\e95c"}.g-cartografia-temperatura:before{content:"\e95d"}.g-cartografia-texto:before{content:"\e95e"}.g-cartografia-usuario:before{content:"\e95f"}.g-cartografia-usuario2:before{content:"\e960"}.g-cartografia-zoom:before{content:"\e961"}.g-cartografia-zoom-extension:before{content:"\e962"}.g-cartografia-zoom-mas:before{content:"\e963"}.g-cartografia-zoom-menos:before{content:"\e964"}.g-cartografia-pin5:before{content:"\e965"}.g-cartografia-pin-nuevo2:before{content:"\e966"}.g-cartografia-pin-seleccionado:before{content:"\e967"}.g-cartografia-brujula-norte:before{content:"\e968"}.m-position-top{top:0}.m-position-bottom{bottom:0}.m-position-right{right:0}.m-position-left{left:0}.m-mapea-container{width:100%;height:100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAABlBMVEUAAAD///+l2Z/dAAAAAnRSTlMICLCRzwIAAAAVSURBVBjTY2CEAwYEGNKCw8QbCEEApbQAyTWv+7EAAAAASUVORK5CYII=);font-family:Muli,"sans-serif"!important;font-size:13px;color:#6c6c6c;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;text-shadow:none;-webkit-rtl-ordering:logical;-webkit-user-select:text;-moz-user-select:text;user-select:text;-webkit-font-smoothing:antialiased;-moz-font-smoothing:antialiased;font-smoothing:antialiased}.m-control{position:absolute;margin:0;z-index:990;overflow-y:hidden;background-color:hsla(0,0%,100%,.4);border-radius:4px;padding:2px}.m-control>button{color:#404040}div.m-control button[class*=" g-cartografia-"],div.m-control button[class^=g-cartografia-]{font-size:28px;padding:8px;font-size:24px;background:none;border:none;cursor:pointer;opacity:.75;-webkit-transition:opacity .25s ease 0s;transition:opacity .25s ease 0s;color:#404040;margin:0}.ol-overviewmap>button{opacity:.75;-webkit-transition:opacity .25s ease 0s;transition:opacity .25s ease 0s}.m-areas>div.m-area>div.m-panel>button.m-panel-btn:hover,.ol-overviewmap>button:hover,div.m-control.activated button[class^=g-cartografia-],div.m-control button[class*=" g-cartografia-"]:hover,div.m-control button[class^=g-cartografia-]:hover{opacity:1!important}.m-areas>div.m-area>div.m-panel>button.m-panel-btn:focus,div.m-control button[class*=" g-cartografia-"]:focus,div.m-control button[class^=g-cartografia-]:focus{outline:none}.m-clear-btn,.m-help-btn{opacity:.4!important;font-size:18px!important}.m-search-btn{order:3;padding-right:14px}.m-help-btn{order:2}.m-clear-btn{order:1}.m-results-btn{display:none}.m-label-content{white-space:nowrap}.m-mapea-container input[type=text],.m-mapea-container textarea{margin:5px;padding:5px;background-color:transparent;cursor:auto;border-radius:4px;border:1px solid rgba(0,0,0,.5);-webkit-appearance:none;-moz-appearance:none;appearance:none;color:#6c6c6c;font-family:Muli,"sans-serif"!important;font-size:13px}.m-mapea-container input[type=text]:focus{outline:none}@media only screen and (max-width:768px){.m-wordbreak{word-break:break-all;white-space:none}}button::-moz-focus-inner{border:0}@-moz-keyframes mloading{to{-moz-transform:rotate(1turn)}}@-webkit-keyframes mloading{to{-webkit-transform:rotate(1turn)}}@keyframes mloading{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.m-area.m-top.m-right,.m-areas,.ol-overlaycontainer-stopevent,.ol-viewport{height:inherit!important}.m-panel.m-layerswitcher.opened{height:calc(100% - 30px)}.m-areas>div.m-area>div.m-panel.m-layerswitcher>div.m-panel-controls{height:100%!important;max-height:100%}.m-attribution{left:3px!important;right:inherit!important;z-index:999999}@media print{.ol-control{display:none}}.m-areas>div.m-area>div.m-panel.m-layerswitcher>div.m-panel-controls{opacity:1;-webkit-transition:max-width .75s ease 0s,max-height .5s ease 0s,opacity 1s ease .2s;transition:max-width .75s ease 0s,max-height .5s ease 0s,opacity 1s ease .2s}.m-areas>div.m-area>div.m-panel.m-layerswitcher.collapsed>div.m-panel-controls{opacity:0;max-width:0;max-height:0;-webkit-transition:max-width .5s ease 0s,max-height 2s ease 0s,opacity .3s ease 0s;transition:max-width .5s ease 0s,max-height 2s ease 0s,opacity .3s ease 0s}.m-location-container.m-locating>button#m-location-button:before{-webkit-animation:mloading 1s linear infinite;-moz-animation:mloading 1s linear infinite}.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width;transition:all .25s}.ol-scale-bar{position:absolute;bottom:8px;left:8px}.ol-scale-step-marker{width:1px;height:15px;background-color:#000;float:right;z-Index:10}.ol-scale-step-text{bottom:-5px;font-size:12px;z-Index:11}.ol-scale-step-text,.ol-scale-text{position:absolute;color:#000;text-shadow:-2px 0 #fff,0 2px #fff,2px 0 #fff,0 -2px #fff}.ol-scale-text{font-size:14px;text-align:center;bottom:25px}.ol-scale-singlebar{position:relative;height:10px;z-Index:9;border:1px solid #000}.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.ol-overlaycontainer,.ol-overlaycontainer-stopevent{pointer-events:none}.ol-overlaycontainer-stopevent>*,.ol-overlaycontainer>*{pointer-events:auto}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:hsla(0,0%,100%,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:hsla(0,0%,100%,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-control button span{pointer-events:none}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button,.ol-attribution ul{display:inline-block}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution:not(.ol-collapsed){background:hsla(0,0%,100%,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:hsla(0,0%,100%,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move}.ol-viewport>div.ol-unselectable>div img{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-o-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000;-moz-perspective:1000;-ms-perspective:1000;perspective:1000}.ol-box{border:1px solid #337ceb!important;background-color:rgba(51,124,235,.33)!important}.ol-zoom>button{background-color:#fff!important;margin:0!important;padding:0;color:#404040!important;opacity:.75;font-size:18px!important;text-align:center;cursor:pointer;width:30px!important;height:30px!important;box-shadow:0 1px 3px 0 #cacaca}.ol-zoom>button:focus,.ol-zoom>button:hover{background-color:transparent;outline:none!important}.ol-zoom>button:hover{opacity:1}.ol-zoomslider{height:198px!important;overflow:auto!important}.ol-zoomslider>button.ol-zoomslider-thumb{background-color:#f0f0f0;border:1px solid rgba(64,64,64,.4);border-radius:20px;padding:0;margin:-5px;height:20px!important;width:20px!important}@-moz-document url-prefix(){.ol-zoomslider>button.ol-zoomslider-thumb{position:relative!important}}.ol-scale-line .ol-scale-line-inner{color:#404040;border-color:#404040}@media only screen and (max-width:768px){.ol-scale-line-up{margin-bottom:30px;margin-left:-15px}}.ol-overviewmap{background-color:#fff!important;border-radius:4px!important;display:block;box-shadow:0 2px 4px rgba(0,0,0,.2),0 -1px 0 rgba(0,0,0,.02)!important;transition:border-radius .33s ease 0s;order:1!important;margin-left:10px!important;display:relative!important}.ol-overviewmap:not(.ol-collapsed) button{position:static!important;position:absolute!important;right:0!important;background-color:#fff!important;border-radius:15px;left:auto!important;right:4px;padding:0 2px 2px;font-size:6px}.ol-overviewmap:not(.ol-collapsed) .ol-overviewmap-map{margin:4px!important}.ol-overviewmap:not(.ol-collapsed)>button:before{font-size:11px!important}.ol-overviewmap.ol-collapsed{border-radius:20px!important}.ol-overviewmap .ol-overviewmap-map{border:0!important;transition:width .33s ease 0s,height .33s ease 0s}.ol-overviewmap.ol-collapsed .ol-overviewmap-map{display:inline-block!important;height:0;width:0;margin:0;padding:0}.ol-overviewmap>button{bottom:4px!important}.ol-overviewmap.ol-collapsed>button,.ol-overviewmap>button{width:20px!important;height:20px!important;border-radius:20px;margin:0!important;padding:0;background-color:transparent!important;color:#404040!important;opacity:.75!important;font-size:15px!important;background:none;border:none;cursor:pointer;font-family:g-cartografia!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center}.ol-overviewmap.ol-collapsed>button:hover{opacity:1}.ol-overviewmap.ol-collapsed>button{height:40px!important;width:40px!important}.ol-overviewmap>button:active,.ol-overviewmap>button:focus,.ol-overviewmap>button:hover{background-color:transparent;outline:none}.ol-overviewmap>button>span{display:none}@media only screen and (max-width:768px){.ol-overviewmap{display:none!important}}.m-panel.m-map-info>div.m-panel-controls>div.m-control.m-scale-container,.m-panel.m-map-info>div.m-panel-controls>div.m-control.m-wmcselector-container{border-radius:20px!important}.m-panel.m-map-info>div.m-panel-controls>div.ol-overviewmap{order:1}.m-wmcselector-container{bottom:8px;right:60px;display:block;padding:0;margin:0}.m-wmcselector-container:before{font-family:g-cartografia!important}.m-wmcselector-select{border:none;background-color:#fefefe;color:#6c6c6c;font-weight:400;text-decoration:none;outline:none;margin:0;-webkit-appearance:none}.m-layerswitcher-container{position:absolute;top:.5em;right:.5em;text-align:left;overflow-y:auto!important;width:100%}@media only screen and (min-width:769px){.m-layerswitcher-container{min-width:440px!important}}.m-layerswitcher-container .m-layersiwtcher-panel{margin:0;top:0;right:0;max-height:100%;text-align:left;background-color:#f4f4f4}.m-layerswitcher-container li.group{padding-top:5px;padding-bottom:8px;text-align:center}.m-layerswitcher-container li.group>div{line-height:normal;margin:0;color:#404040;font-family:Muli,"sans-serif"!important;line-height:40px;text-align:center;border-bottom:1px solid rgba(0,0,0,.08);font-size:15px}.m-layerswitcher-container li div{font-family:sans-serif;font-size:.8em;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;line-height:1.4em;line-height:40px;text-align:center;font-size:15px}.m-layerswitcher-container ul>li{overflow:hidden}.m-layerswitcher-container ul>li.group>ul>li{margin:10px;background-color:#fff}.m-layerswitcher-container li span.m-check{color:#6abe47;margin:0 1% 0 0}.m-layerswitcher-container li input.m-layerswitcher-transparency{margin-right:3%;width:74%}@-moz-document url-prefix(){.m-layerswitcher-container li input.m-layerswitcher-transparency{width:81%;margin-top:16px}.m-layerswitcher-container .tools span{display:block;margin-top:-12px;margin-left:143px}}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.m-layerswitcher-container li input.m-layerswitcher-transparency{display:block;margin-top:1px}.m-layerswitcher-container .tools span{display:block;margin-top:-52px;float:right;margin-right:13%}}.m-layerswitcher-container li span.m-layerswitcher-remove{font-size:11px;color:rgba(0,0,0,.53);cursor:pointer}@media only screen and (max-width:768px){.m-layerswitcher-container li span.m-check{font-size:2em;margin-right:5%}.m-layerswitcher-container li input.m-layerswitcher-transparency{width:77%;display:none}@-moz-document url-prefix(){.m-layerswitcher-container li input.m-layerswitcher-transparency{width:66%}}.m-layerswitcher-container li span.m-layerswitcher-remove{font-size:13px}.m-layerswitcher-container li.visible input.m-layerswitcher-transparency{display:initial}.m-layerswitcher-container li.visible span.m-layerswitcher-remove{font-size:11px}}.m-layersiwtcher-panel li>div.layer,.m-layersiwtcher-panel li>div.layer-base{padding:0 5px;text-align:left;margin:0;border-bottom:none;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.m-layersiwtcher-panel li.visible>div.tools{width:40%;height:auto}.m-layersiwtcher-panel div.tools{float:right;text-align:left}.m-layersiwtcher-panel li.visible>div.layer{margin-bottom:4px}.m-layersiwtcher-panel div.layer{margin-bottom:4px;float:left;width:55%}@media only screen and (max-width:768px){.m-layersiwtcher-panel li>div.layer,.m-layersiwtcher-panel li>div.layer-base{width:90%;padding-right:0}}.m-layersiwtcher-panel li.visible>div.layer-base{margin:0;border:0}.m-layersiwtcher-panel li>div.legend{width:100%;text-align:left;height:0}.m-layersiwtcher-panel li.visible>div.legend{width:90%;height:auto;margin:0 auto}@media only screen and (max-width:768px){.m-layersiwtcher-panel li.visible>div.tools{width:90%;float:none}.m-layersiwtcher-panel div.tools{width:calc(10% - 5px);float:right;text-align:left;margin:0 auto}}.m-layerswitcher-container li.disabled span{color:#666}.m-areas>div.m-area>div.m-panel.m-layerswitcher.collapsed{color:#fda823;height:40px}.m-areas>div.m-area>div.m-panel.m-layerswitcher>button.m-panel-btn{position:absolute;left:-40px;background-color:#fda823;color:#fff;z-index:999999;box-shadow:0 2px 4px rgba(0,0,0,.2),0 -1px 0 rgba(0,0,0,.02)}@media only screen and (max-width:768px){.m-areas>div.m-area>div.m-panel.m-layerswitcher>button.m-panel-btn{background-color:transparent;position:absolute;left:auto;right:0;color:#fda823;z-index:999999;box-shadow:none}}.m-areas>div.m-area>div.m-panel.m-layerswitcher.collapsed>button.m-panel-btn{position:inherit;color:#fda823;left:0;box-shadow:none}.m-areas>div.m-area>div.m-panel.m-layerswitcher.collapsed>div.m-panel-controls{padding:0}.m-areas>div.m-area>div.m-panel.m-layerswitcher.opened{border-top-left-radius:0}.m-areas>div.m-area>div.m-panel.m-layerswitcher>div.m-panel-controls{max-width:61vw}@media only screen and (max-width:768px){.m-areas>div.m-area>div.m-panel.m-layerswitcher.opened{width:100vw;height:100vh;position:fixed;top:0;left:0;margin:0;z-index:10000}.m-areas>div.m-area>div.m-panel.m-layerswitcher>div.m-panel-controls{max-width:100vw;max-height:100vh;width:100%}}input[type=range].m-layerswitcher-transparency{-webkit-appearance:none;width:30%;height:8px}@media (-ms-high-contrast:active),(-ms-high-contrast:none){input[type=range].m-layerswitcher-transparency{height:auto}}input[type=range].m-layerswitcher-transparency:focus{outline:none}input[type=range]::-webkit-slider-runnable-track{width:100%;height:2px;cursor:pointer;background:rgba(0,0,0,.31);border-radius:12px}input[type=range]::-webkit-slider-thumb{height:10px;width:10px;cursor:pointer;border-radius:15px;background:#fff;-webkit-appearance:none;margin-top:-4px;background-color:#fda823}@media only screen and (max-width:768px){input[type=range]::-webkit-slider-thumb{height:12px;width:12px}}input[type=range]::-moz-range-track{width:100%;height:2px;cursor:pointer;background:rgba(0,0,0,.31);border-radius:12px}input[type=range]::-moz-range-thumb{height:10px;width:10px;cursor:pointer;border:none;background:#fff;-webkit-appearance:none;margin-top:20px;background-color:#fda823}input[type=range]::-ms-track{cursor:pointer;width:100%;height:2px;background:transparent;border-color:transparent;border-width:12px;color:transparent;margin-top:-8px}input[type=range]::-ms-thumb{border:none;height:10px;cursor:pointer;width:10px;border-radius:15px;background-color:#fda823;-webkit-appearance:none}input[type=range]::-ms-fill-lower,input[type=range]::-ms-fill-upper{background:#ddd;border-radius:10px}input[type=range]:disabled::-moz-range-thumb,input[type=range]:disabled::-ms-thumb,input[type=range]:disabled::-webkit-slider-thumb{background-color:#848484}input[type=range]:disabled{opacity:.5}.m-areas>div.m-area>div.m-panel.m-layerswitcher{background-color:#f4f4f4}.m-areas>div.m-area>div.m-panel.m-layerswitcher>div.m-panel-controls{overflow:hidden;overflow-y:auto;padding-right:0}.m-layersiwtcher-panel>ul{margin:0;padding:0}.m-layerswitcher-container ul.m-base-layers,.m-layerswitcher-container ul.m-groups,.m-layerswitcher-container ul.m-layers,ul.m-groups>li.m-group>ul.m-layers{list-style:none;padding:10px}ul.m-groups>li.m-group{background:#eaeaea}ul.m-base-layers>li.m-layer,ul.m-groups>li.m-group,ul.m-layers>li.m-layer{box-shadow:0 1px 2px rgba(0,0,0,.3)}ul.m-groups>li.m-group>.m-title{cursor:pointer}ul.m-base-layers>li.m-layer>.m-visible-control,ul.m-groups>li.m-group>.m-visible-control,ul.m-groups>li.m-group>ul.m-layers>li>.m-visible-control,ul.m-layers>li.m-layer>.m-visible-control{float:left;width:24px}ul.m-base-layers>li.m-layer>.m-title,ul.m-groups>li.m-group>.m-title,ul.m-groups>li.m-group>ul.m-layers>li>.m-title,ul.m-layers>li.m-layer>.m-title{text-align:left;display:inline-block;width:59%}@-moz-document url-prefix(){ul.m-base-layers>li.m-layer>.m-title,ul.m-groups>li.m-group>.m-title,ul.m-groups>li.m-group>ul.m-layers>li>.m-title,ul.m-layers>li.m-layer>.m-title{text-align:left;display:inline-block;width:59%}@media only screen and (max-width:768px){ul.m-base-layers>li.m-layer>.m-title,ul.m-groups>li.m-group>.m-title,ul.m-groups>li.m-group>ul.m-layers>li>.m-title,ul.m-layers>li.m-layer>.m-title{width:57%}}}ul.m-groups>li.m-group>.m-title{float:left;width:calc(96% - 48px)}@media only screen and (max-width:768px){ul.m-base-layers>li.m-layer>.m-visible-control,ul.m-groups>li.m-group>.m-visible-control,ul.m-groups>li.m-group>ul.m-layers>li>.m-visible-control,ul.m-layers>li.m-layer>.m-visible-control{width:38px}ul.m-base-layers>li.m-layer>.m-title,ul.m-groups>li.m-group>.m-title,ul.m-groups>li.m-group>ul.m-layers>li>.m-title,ul.m-layers>li.m-layer>.m-title{width:53%}ul.m-groups>li.m-group>.m-title{width:calc(94% - 48px)}}ul.m-groups>li.m-group>.m-collapsed-icon{width:24px;cursor:pointer}ul.m-base-layers,ul.m-layers{background-color:#f9f9f9}ul.m-base-layers>li,ul.m-layers>li{background-color:#fff;margin-bottom:5px;border:1px solid rgba(0,0,0,.1)}ul.m-base-layers>li>div.m-legend,ul.m-layers>li>div.m-legend{padding-top:12.5px;padding-bottom:12.5px}ul.m-base-layers>li>div.m-legend{max-width:50vw}ul.m-base-layers>li>div.m-legend>img,ul.m-layers>li>div.m-legend>img{max-width:45vw;margin:auto!important}.m-popup{position:absolute;background-color:#fff;border:1px solid #ccc;bottom:12px;left:-50px;border-radius:5px;box-shadow:2px 2px 8px -4px rgba(0,0,0,.53)}.m-popup:after,.m-popup:before{top:100%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.m-popup:after{border-top-color:#fff;border-width:10px;left:48px;margin-left:-10px}.m-popup:before{border-top-color:#ccc;border-width:11px;left:48px;margin-left:-11px}.m-popup-content{min-width:170px;width:auto;overflow-x:auto;max-width:50vw;max-height:70vh}.m-popup>div.m-content>div.m-header{cursor:pointer}.m-popup>div.m-content>div.m-header>div.m-subtitle,.m-popup>div.m-content>div.m-header>div.m-title{display:none}.m-popup-closer{position:absolute;top:2px;right:2px;font-size:100%;padding:0 4px;color:grey;text-decoration:none}.m-popup-closer:after{content:"\2716"}.m-popup div.infoResult{min-width:130px}.m-popup div.infoResult p{padding:.1em;margin:0}.m-popup-content h3{margin:.25em 0}.m-popup.marker{margin-bottom:30px}.m-popup .m-content{margin:0;padding:15px 27px 15px 15px}.m-popup .m-footer{margin:0;padding:5px 0;display:flex}.m-popup .m-footer>a>button{border:none;background-color:transparent;cursor:pointer;font-size:18px;color:#337ceb;transition:color .3s}.m-popup .m-footer>a>button:hover{color:#d9534f}.m-popup>div.m-content>div.m-body{overflow-y:auto;overflow-x:hidden;max-height:50vh;width:calc(100% + 15px)}@media only screen and (max-width:768px){.m-popup>div.m-content>div.m-body{width:calc(100% - 30px);margin-left:15px;margin-top:15px}}.m-popup>div.m-popup-content>div.m-content+div.m-content{margin-top:10px}.m-popup>div.m-popup-content>div.m-content>p.m-title{text-align:center;line-height:30px;font-size:15px;color:#404040;background-color:#dedede;margin-top:0;font-weight:700}.m-popup>div.m-popup-content>div.m-content:last-child{border-bottom:0}.m-popup div.m-editattribute-content button.save{display:table;margin:10px 0;padding:5px;background-color:#fff;font-family:Muli,"sans-serif"!important;width:97%;border-radius:4px;border:1px solid rgba(0,0,0,.4);font-size:15px;line-height:25px;cursor:pointer;opacity:.75;-webkit-transition:opacity .25s ease 0s;transition:opacity .25s ease 0s;color:#404040}.m-popup div.m-editattribute-content button.save:hover{opacity:1}.m-popup.m-has-tabs{border-top-left-radius:0;min-width:150px}.m-popup>div.m-tabs{position:absolute;display:inline-flex;left:-1px;top:-29px;margin:0}.m-popup>div.m-tabs>div.m-tab{height:17px;width:30px;background-color:#f2f2f2;cursor:pointer;font-size:18px;padding:5px;text-align:center;border:1px solid #ccc;margin:0;border-right:0}.m-popup>div.m-tabs>div.m-tab:first-child{border-top-left-radius:4px}.m-popup>div.m-tabs>div.m-tab:last-child{border-top-right-radius:4px;border-right:1px solid #ccc}.m-popup>div.m-tabs>div.m-tab.m-activated{border-bottom:0;height:18px;background-color:#fff}@media only screen and (max-width:768px){.m-popup{width:100vw;height:100vh;position:fixed;left:0;margin:0;padding:0;z-index:1500;border-bottom-left-radius:0;border-bottom-right-radius:0}.m-popup .m-footer{position:relative;display:flex;padding:15px 5px}.m-popup>div.m-content>div.m-header,.m-popup>div.m-tabs{text-align:center;padding-top:5px;display:flex;align-items:center;flex-flow:column;flex-wrap:nowrap;justify-content:center}.m-popup:not(.m-has-tabs)>div.m-content>div.m-header{padding-top:0;position:relative;box-shadow:0 0 7px rgba(0,0,0,.2),0 -1px 0 rgba(0,0,0,.02);flex-flow:row;justify-content:flex-end;height:10vh}.m-popup.m-has-tabs>div.m-content>div.m-header{height:0;margin:0;padding:0}.m-popup>div.m-tabs{flex-flow:row;position:relative;top:0;left:0;width:100%;align-items:stretch;margin:0;padding:0;height:10vh}.m-popup>div.m-tabs>div.m-tab,.m-popup>div.m-tabs>div.m-tab.m-activated{height:100%;width:100%;margin:0;font-size:24px;display:flex;justify-content:center;align-items:center;padding:0;border-top:0;border-radius:0}.m-popup>div.m-tabs>div.m-tab:first-child{border-left:0}.m-popup>div.m-content{padding:0}.m-popup>div.m-content>div.m-header>div.m-title{display:initial;font-size:1.2em;font-weight:700;width:100%}.m-popup>div.m-content>div.m-header>div.m-subtitle{display:initial;font-size:1em;font-style:italic}.m-popup.m-has-tabs>div.m-content>div.m-header>a.m-popup-closer{position:absolute;right:0;height:40px}.m-popup>div.m-content>div.m-body{overflow-y:auto;max-height:100vh}.m-popup.m-collapsed>div.m-tabs,.m-popup:not(.m-has-tabs).m-collapsed>div.m-content>div.m-header{height:7vh}.m-popup.m-collapsed>div.m-content>div.m-body{height:0}.m-popup.m-collapsed{top:92%}.m-popup.m-collapsed.m-has-tabs>div.m-content>div.m-header>a.m-popup-closer{display:none}.m-popup.m-default>div.m-tabs,.m-popup:not(.m-has-tabs).m-default>div.m-content>div.m-header{height:7vh}.m-popup.m-default>div.m-content>div.m-body{height:48vh}.m-popup.m-default{top:45vh}.m-popup.m-default.m-has-tabs>div.m-content>div.m-header>a.m-popup-closer{top:7vh}.m-popup.m-full>div.m-tabs,.m-popup:not(.m-has-tabs).m-full>div.m-content>div.m-header{height:7vh}.m-popup.m-full>div.m-content>div.m-body{height:93vh}.m-popup.m-full{top:0}.m-popup>div.m-content>div.m-header>a.m-popup-closer{height:100%;width:40px;margin:0;padding:0;font-family:g-cartografia;position:inherit;display:flex;align-items:center;justify-content:flex-end;font-size:22px}.m-popup>div.m-content>div.m-header>a.m-popup-closer:after{content:"\e919"}.m-popup.m-full.m-has-tabs>div.m-content>div.m-header>a.m-popup-closer{top:7vh}.m-popup:not(.m-no-animation){-webkit-transition:top .5s ease 0s;transition:top .5s ease 0s}.m-popup>div.m-content>div.m-header,.m-popup>div.m-tabs{-webkit-transition:height .5s ease 0s,background-color .5s ease 0s;transition:height .5s ease 0s,background-color .5s ease 0s}.m-popup>div.m-content>div.m-header>div.m-title,.m-popup>div.m-tabs>div.m-tab{-webkit-transition:font-size .5s ease 0s;transition:font-size .5s ease 0s}}.m-popup>div.m-content>div.m-body>div.m-geojson-content>div.result{border-top:1px solid rgba(0,0,0,.13)}.m-popup>div.m-content>div.m-body>div.m-geojson-content>div.result:first-child{border:0}.m-popup>div.m-content>div.m-body>div.m-geojson-content>div.result>table{width:100%;border-top:1px dashed rgba(0,0,0,.09)}.m-popup>div.m-content>div.m-body>div.m-geojson-content>div.result>table:first-child{border:0}.m-popup>div.m-content>div.m-body>div.m-geojson-content>div.result>table td.value{text-align:right}.m-popup>div.m-content>div.m-body>div.m-geojson-content>div.result>table td.key{font-weight:700}.m-popup>div.m-content>div.m-body>div.m-geojson-content>div.result>table td.key,.m-popup>div.m-content>div.m-body>div.m-geojson-content>div.result>table td.value{white-space:nowrap}@supports (overflow:-webkit-marquee) and (justify-content:inherit){@media only screen and (max-width:768px){.m-popup.m-collapsed{top:87vh}}}.unsetTransform{transform:unset!important}.m-dialog{position:absolute;top:0;left:0;z-index:99999;width:100%;height:100%}.m-dialog>div.m-modal{width:100%;height:100%;background-color:hsla(0,0%,100%,.5);display:flex;align-items:center}.m-dialog>div.m-modal>div.m-content{position:relative;max-height:70vh;max-width:70vw;min-width:30vw;margin:0 auto;background-color:#fff;padding:10px;border-radius:4px;box-shadow:0 2px 4px rgba(0,0,0,.2),0 -1px 0 rgba(0,0,0,.02)}.m-dialog div.m-title{line-height:40px;text-align:center;font-weight:700}.m-dialog div.m-message{padding:10px 5px;border-bottom:1px solid rgba(0,0,0,.2);font-size:15px}.m-dialog div.m-button>button{background-color:transparent;border:none;box-shadow:none;cursor:pointer;margin-top:10px;padding:5px;width:50px;font-weight:700}.m-dialog div.m-button{text-align:right}.m-dialog.info div.m-button>button,.m-dialog.info div.m-title{background-color:#337ceb;color:#fff}.m-dialog.error div.m-button>button,.m-dialog.error div.m-title{background-color:#d9534f;color:#fff}.m-dialog.success div.m-button>button,.m-dialog.success div.m-title{background-color:#67af13;color:#fff}.m-location-container{top:20px;left:600px}.m-location-container.m-locating>button#m-location-button:before{animation:mloading 1s linear infinite;position:absolute;left:11px;top:11px}.m-location-container.m-locating>button#m-location-button{padding:8px}@supports (-ms-ime-align:auto){.m-location-container.m-locating>button#m-location-button{height:36px}}.m-scale-container{margin:0;box-shadow:0 1px 2px rgba(0,0,0,.3);padding:5px;right:0;font-weight:700;bottom:2em;display:block;font-size:smaller;background-color:rgba(0,60,136,.5);font-weight:400;border-top-left-radius:2px;border-bottom-left-radius:2px}.m-scale-container>.m-unit{font-family:Muli!important;line-height:normal}.m-scale-container>.m-scale{line-height:normal}.m-scale-container>.m-unit:before{font-family:g-cartografia!important;color:#a35d38;font-size:12px!important;margin-right:5px}.m-areas>div.m-area>div.m-panel>div.m-panel-controls>div.m-control.m-rotate-container button[class^=g-cartografia-]#m-rotate-button{background-color:#fff;color:#337ceb;cursor:pointer;position:absolute;z-index:200;padding:0;left:19%;top:23%;font-size:1.5rem;border-radius:50%}.m-rotate-slider{border-radius:50%;height:30px;width:30px;cursor:pointer;position:absolute}#m-rotate-slider-container{width:40px;height:40px}#m-rotate-marker{width:45px;position:absolute;height:45px}#m-rotate-marker-circle{stroke:#337ceb;fill:#fff;cursor:pointer}.m-mouse-position{white-space:pre}.m-mouse-position:before{color:#a35d38;margin-right:5px;font-family:g-cartografia!important}@media only screen and (max-width:768px){.m-mouse-position{display:none!important}}.m-panel.m-map-info>div.m-panel-controls>.m-mouse-position{border-radius:20px!important;order:4}.m-panel.m-map-info.m-with-scale>div.m-panel-controls>.m-mouse-position,.m-panel.m-map-info.m-with-wmcselector>div.m-panel-controls>.m-mouse-position{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.m-getfeatureinfo-container{top:20px;left:300px}.m-popup table.mapea-table td.header{text-align:center;padding-top:10px;border-bottom:1px ridge #6c6c6c}.m-getfeatureinfo-content-info{min-width:250px;margin-bottom:.7rem}.m-getfeatureinfo-content-info-body.m-content-collapsed,span.m-content-collapsed{display:none}.m-getfeatureinfo-content-info .m-getfeatureinfo-content-info-header{display:flex;align-items:center;font-size:12px;background-color:#eee;margin-bottom:5px;color:#000;padding:5px}.m-getfeatureinfo-content-info .m-getfeatureinfo-content-info-header .m-arrow-right{border:7px solid transparent;border-left-color:#000;cursor:pointer}.m-getfeatureinfo-content-info .m-getfeatureinfo-content-info-header .m-arrow-down{border:7px solid transparent;border-top-color:#000;cursor:pointer;margin-right:5px}.m-areas{top:0;left:0;width:0;height:0;max-height:0}.m-areas>div.m-area{-webkit-display:flex;display:flex;position:absolute;-webkit-flex-flow:column nowrap;flex-flow:column nowrap}.m-areas>div.m-area.m-top{top:0}.m-areas>div.m-area.m-bottom{bottom:0;width:0;max-width:0}.m-areas>div.m-area.m-bottom.m-right{z-index:10}.m-areas>div.m-area.m-left{left:0;-webkit-align-items:flex-start;align-items:flex-start}.m-areas>div.m-area.m-right{right:0;-webkit-align-items:flex-end;align-items:flex-end}@media only screen and (max-width:768px){.m-areas>div.m-area.m-top.top-extra{top:65px}.m-areas>div.m-area.m-top.top-extra.top-extra-search{top:75px}.m-areas>div.m-area.m-top.top-extra.top-extra-searchs{top:135px}}.m-areas>div.m-area>div.m-panel{z-index:999;position:relative;background:#fff;box-sizing:border-box;border-radius:4px}.m-areas>div.m-area>div.m-panel,div.m-panel>button{box-shadow:0 2px 4px rgba(0,0,0,.2),0 -1px 0 rgba(0,0,0,.02)}.m-areas>div.m-area.m-top>div.m-panel{margin-top:10px}.m-areas>div.m-area.m-bottom>div.m-panel{margin-bottom:10px}.m-areas>div.m-area.m-left>div.m-panel{margin-left:10px}.m-areas>div.m-area.m-right>div.m-panel{margin-right:10px}.m-areas>div.m-area>div.m-panel.no-collapsible{border-radius:20px}.m-areas>div.m-area>div.m-panel>button.m-panel-btn{color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.2),0 -1px 0 rgba(0,0,0,.02)}.m-areas>div.m-area>div.m-panel.no-collapsible>div.m-panel-controls>div.m-control>button,.m-areas>div.m-area>div.m-panel>button.m-panel-btn{-webkit-transition:opacity .25s ease 0s,color .25s ease 0s;transition:opacity .25s ease 0s,color .25s ease 0s;padding:0;font-size:19px;background:none;cursor:pointer;width:40px;height:40px;box-sizing:border-box;border:0;font-family:g-cartografia!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center}.m-areas>div.m-area>div.m-panel.opened>button.m-panel-btn{font-size:15px}.m-areas>div.m-area.m-left>div.m-panel>button.m-panel-btn{border-top-right-radius:4px;border-bottom-right-radius:4px;float:right}.m-areas>div.m-area.m-left>div.m-panel.collapsed>button.m-panel-btn{position:inherit;right:0;box-shadow:none}.m-areas>div.m-area.m-right>div.m-panel>button.m-panel-btn{border-top-left-radius:4px;border-bottom-left-radius:4px;float:left}.m-areas>div.m-area>div.m-panel.m-tools>button.m-panel-btn{background-color:#337ceb}.m-areas>div.m-area>div.m-panel.m-edition>button.m-panel-btn{background-color:#67af13}.m-areas>div.m-area>div.m-panel.m-tools.collapsed>button.m-panel-btn{color:#337ceb}.m-areas>div.m-area>div.m-panel.m-edition.collapsed>button.m-panel-btn{color:#67af13}.m-areas>div.m-area>div.m-panel.collapsed>button.m-panel-btn{border-radius:20px;background-color:#fff!important}.m-areas>div.m-area>div.m-panel>button.m-panel-btn:focus{outline:none}.m-areas>div.m-area>div.m-panel.no-collapsible>button.m-panel-btn{display:none}.m-areas>div.m-area.m-left>div.m-panel,.m-areas>div.m-area.m-left>div.m-panel>div.m-panel-controls{-webkit-flex-direction:row-reverse;flex-direction:row-reverse;align-items:flex-end}.m-areas>div.m-area>div.m-panel.m-tools{order:-90}.m-areas>div.m-area>div.m-panel.m-edition{order:-80}.m-areas>div.m-area>div.m-panel.m-panzoombar{order:-69;margin-top:8px;border-radius:20px;margin-left:25px;width:10px}@media only screen and (max-width:768px){.m-areas>div.m-area>div.m-panel.m-panzoombar{display:none}}.m-areas>div.m-area>div.m-panel.m-panzoom{order:-70;width:30px;height:60px;border-radius:4px;margin-left:15px}.m-areas>div.m-area>div.m-panel.m-scaleline{background-color:transparent;box-shadow:none;left:20px}.m-areas>div.m-area>div.m-panel.m-location>div.m-panel-controls>div.m-control.activated>button{color:#337ceb}.m-areas>div.m-area>div.m-panel.m-mouse{border-radius:4px;padding:5px}.m-areas>div.m-area>div.m-panel.m-mouse>div.m-panel-controls{width:auto}.m-areas>div.m-area>div.m-panel.m-mouse>div.m-panel-controls:before{font-size:15px;background:none}.m-areas>div.m-area>div.m-panel.m-overviewmap{box-shadow:none}.m-areas>div.m-area>div.m-panel>div.m-panel-controls{display:flex}@-moz-document url-prefix(){.m-areas>div.m-area>div.m-panel>div.m-panel-controls{display:inline-flex}}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.m-areas>div.m-area>div.m-panel.collapsed{height:auto!important}.m-areas>div.m-area>div.m-panel.m-layerswitcher.collapsed{width:40px!important}.m-areas>div.m-area>div.m-panel.m-layerswitcher>div.m-panel-controls{width:100%!important}.m-areas>div.m-area>div.m-panel.m-panzoom{height:auto!important}.m-printer.opened .m-printer-container .form{min-height:176px}.m-printer-container>div.button>button.print{width:57%!important}}@supports (overflow:-webkit-marquee) and (justify-content:inherit){.m-areas>div.m-area.m-top{top:0}}.m-areas>div.m-area.m-bottom,.m-areas>div.m-area.m-top,.m-areas>div.m-area>div.m-panel.m-map-info,.m-areas>div.m-area>div.m-panel.m-map-info>div.m-panel-controls{visibility:hidden}.m-areas>div.m-area>div.m-panel{visibility:visible}.m-areas>div.m-area>div.m-panel.m-map-info>div.m-panel-controls>div{visibility:visible!important}.m-areas>div.m-area>div.m-panel{-webkit-transition:border-radius .5s ease 0s;transition:border-radius .5s ease 0s}.m-areas>div.m-area>div.m-panel.collapsed{border-radius:20px}.m-areas>div.m-area>div.m-panel>div.m-panel-controls{opacity:1;border-radius:10px;-webkit-transition:max-width 1s ease 0s,opacity .75s ease .1s;transition:max-width 1s ease 0s,opacity .75s ease .1s}.m-areas>div.m-area>div.m-panel.collapsed>div.m-panel-controls{opacity:0;max-width:0;-webkit-transition:max-width .4s ease 0s,opacity .3s ease 0s;transition:max-width .4s ease 0s,opacity .3s ease 0s}.m-areas>div.m-area>div.m-panel>div.m-panel-controls>div{position:inherit!important;overflow:hidden;background-color:transparent;border-radius:0;padding:0;box-shadow:none;display:table}.m-areas>div.m-area>div.m-panel.m-tools>div.m-panel-controls>div.m-control.activated>button{color:#337ceb}.m-areas>div.m-area>div.m-panel.m-edition>div.m-panel-controls>div.m-control.activated>button{color:#67af13}@media only screen and (min-width:769px){.m-geosearch.collapsed .m-panel-controls,.m-searchstreet.collapsed .m-panel-controls,.m-searchstreetgeosearch.collapsed .m-panel-controls{display:none!important}}.m-edition.collapsed .m-panel-controls,.m-tools.collapsed .m-panel-controls{display:none!important}.m-map-info>div.m-panel-controls{flex-direction:row-reverse;align-items:flex-end}.m-map-info{background:transparent!important;border-radius:0!important;box-shadow:none!important;right:0;order:4}.m-location{order:1;z-index:97}.m-panel.m-map-info>div.m-panel-controls>div.m-control.m-scale-container{order:3}.m-panel.m-map-info.m-with-mouse>div.m-panel-controls>div.m-control.m-scale-container{border-top-left-radius:0!important;border-bottom-left-radius:0!important}@media only screen and (max-width:768px){.m-panel.m-map-info.m-with-mouse>div.m-panel-controls>div.m-control.m-scale-container{border-top-left-radius:20px!important;border-bottom-left-radius:20px!important}}.m-panel.m-map-info.m-with-wmcselector>div.m-panel-controls>div.m-control.m-scale-container{border-top-right-radius:0!important;border-bottom-right-radius:0!important}.m-panel.m-map-info>div.m-panel-controls>div.m-control.m-wmcselector-container{order:2}.m-panel.m-map-info.m-with-mouse>div.m-panel-controls>div.m-control.m-wmcselector-container,.m-panel.m-map-info.m-with-scale>div.m-panel-controls>div.m-control.m-wmcselector-container{border-top-left-radius:0!important;border-bottom-left-radius:0!important}@media only screen and (max-width:768px){.m-panel.m-map-info.m-with-mouse:not(.m-with-scale)>div.m-panel-controls>div.m-control.m-wmcselector-container{border-top-left-radius:20px!important;border-bottom-left-radius:20px!important}}.m-areas>div.m-area>div.m-panel>div.m-panel-controls .m-mouse-position{display:inline;height:15px!important}.m-areas>div.m-area>div.m-panel>div.m-panel-controls .m-mouse-position,.m-scale-container{background-color:#fff!important;padding:6px 12px 3px!important;font-family:Muli,"sans-serif"!important;font-size:12px!important;box-shadow:0 2px 4px rgba(0,0,0,.2),0 -1px 0 rgba(0,0,0,.02)!important}.m-scale-container{display:flex!important;height:15px;white-space:pre}.m-scale-container:before{color:#a35d38;margin-right:5px}.m-wmcselector-container{background-color:#fff!important;padding:4px 10px 3px 12px!important;font-family:Muli,"sans-serif"!important;font-size:12px!important;box-shadow:0 2px 4px rgba(0,0,0,.2),0 -1px 0 rgba(0,0,0,.02)!important;display:flex!important;height:17px}.m-wmcselector-container:before{color:#a35d38;margin-right:5px;margin-top:3px}@media only screen and (max-width:768px){.m-scale-container{border-top-left-radius:20px!important;border-bottom-left-radius:20px!important;padding:6px 12px 3px!important}}@media only screen and (min-width:769px){.m-geosearch.collapsed div.results-panel,.m-geosearch.collapsed div.search-panel{display:none!important}}.m-kml-desc>table{width:100%} \ No newline at end of file diff --git a/mapea-legacy/js/configuration-6.2.0.js b/mapea-legacy/js/configuration-6.2.0.js new file mode 100644 index 000000000..ef5d6b8d4 --- /dev/null +++ b/mapea-legacy/js/configuration-6.2.0.js @@ -0,0 +1,438 @@ +/** + * Mapea API + * Version 6.2.0 + * Date 15-06-2022 + */ +(function(M) { + /** + * Pixels width for mobile devices + * + * @private + * @type {Number} + */ + M.config('MOBILE_WIDTH', 768); + + /** + * The Mapea URL + * @const + * @type {string} + * @public + * @api stable + */ + M.config('MAPEA_URL', location.protocol + '//mapea4-sigc.juntadeandalucia.es/mapea'); + + /** + * The path to the Mapea proxy to send + * jsonp requests + * @const + * @type {string} + * @public + * @api stable + */ + M.config('PROXY_URL', location.protocol + '//mapea4-sigc.juntadeandalucia.es/mapea/api/proxy'); + + /** + * The path to the Mapea proxy to send + * jsonp requests + * @const + * @type {string} + * @public + * @api stable + */ + M.config('PROXY_POST_URL', location.protocol + '//mapea4-sigc.juntadeandalucia.es/mapea/proxyPost'); + + /** + * The path to the Mapea templates + * @const + * @type {string} + * @public + * @api stable + */ + M.config('TEMPLATES_PATH', '/files/templates/'); + + /** + * The path to the Mapea theme + * @const + * @type {string} + * @public + * @api stable + */ + M.config('THEME_URL', location.protocol + '//mapea4-sigc.juntadeandalucia.es/mapea/assets/'); + + /** + * The Geosearch URL + * @const + * @type {string} + * @public + * @api stable + */ + M.config('GEOSEARCH_URL', location.protocol + '//geobusquedas-sigc.juntadeandalucia.es'); + + /** + * The Geosearch core + * @const + * @type {string} + * @public + * @api stable + */ + M.config('GEOSEARCH_CORE', 'sigc'); + + /** + * The Geosearch handler + * @const + * @type {string} + * @public + * @api stable + */ + M.config('GEOSEARCH_HANDLER', '/search?'); + + /** + * The Geosearch distance + * @const + * @type {int} + * @public + * @api stable + */ + M.config('GEOSEARCH_DISTANCE', '600'); + + /** + * The Geosearchbylocation spatial field + * @const + * @type {string} + * @public + * @api stable + */ + M.config('GEOSEARCH_SPATIAL_FIELD', 'geom'); + + /** + * The Geosearch rows + * @const + * @type {string} + * @public + * @api stable + */ + M.config('GEOSEARCH_ROWS', '20'); + + /** + * The Geosearch rows + * @const + * @type {string} + * @public + * @api stable + */ + M.config('GEOSEARCHBYLOCATION_ROWS', '100'); + + /** + * Predefined WMC files. It is composed of URL, + * predefined name and context name. + * @type {object} + * @public + * @api stable + */ + M.config('predefinedWMC', { + /** + * Predefined WMC URLs + * @const + * @type {Array} + * @public + * @api stable + */ + 'urls': '//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/mapa.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/hibrido.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/satelite.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/context_cdau_callejero.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/context_cdau_hibrido.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/context_cdau_satelite.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextCallejeroCache.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextCallejero.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextIDEA.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextOrtofoto2009.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/callejero2011cache.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/ortofoto2011cache.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/hibrido2011cache.xml,//mapea4-sigc.juntadeandalucia.es/mapea/files/wmc/contextOrtofoto.xml'.split(',').map(e => location.protocol + e), + + /** + * WMC predefined names + * @const + * @type {Array} + * @public + * @api stable + */ + 'predefinedNames': 'mapa,hibrido,satelite,cdau,cdau_hibrido,cdau_satelite,callejerocacheado,callejero,idea,ortofoto09,callejero2011cache,ortofoto2011cache,hibrido2011cache,ortofoto'.split(','), + + /** + * WMC context names + * @const + * @type {Array} + * @public + * @api stable + */ + 'names': 'Mapa,Hibrido,Satelite,Callejero,Hibrido,Satelite,mapa callejero cache,mapa del callejero,mapa idea,mapa ortofoto09,Callejero,Ortofoto,Híbrido,mapa ortofoto'.split(',') + }); + + /** + * TODO + * @type {object} + * @public + * @api stable + */ + M.config('tileMappgins', { + /** + * Predefined WMC URLs + * @const + * @type {Array} + * @public + * @api stable + */ + 'tiledNames': 'base,SPOT_Andalucia,orto_2010-11_25830,CallejeroCompleto,orto_2010-11_23030'.split(','), + + /** + * WMC predefined names + * @const + * @type {Array} + * @public + * @api stable + */ + 'tiledUrls': '//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.ideandalucia.es/geowebcache/service/wms?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,//www.ideandalucia.es/geowebcache/service/wms?'.split(',').map(e => location.protocol + e), + + /** + * WMC context names + * @const + * @type {Array} + * @public + * @api stable + */ + 'names': 'CDAU_base,mosaico_spot_2005,orto_2010-11,CallejeroCompleto,orto_2010-11'.split(','), + + /** + * WMC context names + * @const + * @type {Array} + * @public + * @api stable + */ + 'urls': '//www.callejerodeandalucia.es/servicios/base/wms?,//www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,//www.ideandalucia.es/wms/ortofoto2010?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms?,//www.ideandalucia.es/wms/ortofoto2010?'.split(',').map(e => location.protocol + e) + }); + + /** + * Default projection + * @const + * @type {string} + * @public + * @api stable + */ + M.config('DEFAULT_PROJ', 'EPSG:25830*m'); + + /** + * Predefined WMC files. It is composed of URL, + * predefined name and context name. + * @type {object} + * @public + * @api stable + */ + M.config('geoprint', { + /** + * Printer service URL + * @const + * @type {Array} + * @public + * @api stable + */ + 'URL': location.protocol + '//geoprint-sigc.juntadeandalucia.es/geoprint/pdf', + + /** + * WMC predefined names + * @const + * @type {Array} + * @public + * @api stable + */ + 'DPI': 120, + + /** + * WMC context names + * @const + * @type {Array} + * @public + * @api stable + */ + 'FORMAT': 'pdf', + + /** + * WMC context names + * @const + * @type {Array} + * @public + * @api stable + */ + 'TEMPLATE': 'A4 landscape (SIGC)', + + /** + * WMC context names + * @const + * @type {Array} + * @public + * @api stable + */ + 'FORCE_SCALE': false, + + /** + * TODO + * @const + * @type {boolean} + * @public + * @api stable + */ + 'LEGEND': true + }); + + /** + * Geoprint configuration. + * @type {object} + * @public + * @api stable + */ + M.config('geoprint2', { + /** + * Printer service URL + * @const + * @type {Array} + * @public + * @api stable + */ + 'URL': location.protocol + '//geoprint-sigc.juntadeandalucia.es/geoprint3/print/SIGC', + + /** + * Printer service URL + * @const + * @type {Array} + * @public + * @api stable + */ + 'URL_APPLICATION': location.protocol + '//geoprint-sigc.juntadeandalucia.es/geoprint3', + }); + + /** + * Predefined WMC files. It is composed of URL, + * predefined name and context name. + * @type {object} + * @public + * @api stable + */ + M.config('panels', { + /** + * TODO + * @const + * @type {Array} + * @public + * @api stable + */ + 'TOOLS': 'measurebar,measurelength,measureclear,measurearea,getfeatureinfo'.split(','), + + /** + * TODO + * @const + * @type {Array} + * @public + * @api stable + */ + 'EDITION': 'drawfeature,modifyfeature,deletefeature,editattribute,savefeature,clearfeature'.split(',') + }); + + /** + * Searchstreet service URL + * @const + * @type {string} + * @public + * @api stable + */ + M.config('SEARCHSTREET_URL', location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs'); + + /** + * Autocomplete municipality service URL + * @const + * @type {string} + * @public + * @api stable + */ + M.config('SEARCHSTREET_URLCODINEAUTOCOMPLETE', location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio'); + + /** + * service URL check code INE + * @const + * @type {string} + * @public + * @api stable + */ + M.config('SEARCHSTREET_URLCOMPROBARINE', location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne'); + + /** + * Normalizar searchstreet service URL + * @const + * @type {string} + * @public + * @api stable + */ + M.config('SEARCHSTREET_NORMALIZAR', location.protocol + '//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar'); + + /** + * Minimum number of characters to start autocomplete + * @const + * @type {number} + * @public + * @api stable + */ + M.config('AUTOCOMPLETE_MINLENGTH', '3'); + + /** + * TODO + * + * @private + * @type {Number} + */ + M.config('AUTOCOMPLETE_DELAYTIME', '750'); + + /** + * Number of results to show + * + * @private + * @type {Number} + */ + M.config('AUTOCOMPLETE_LIMIT', '10'); + + /** + * TODO + * + * @private + * @type {String} + */ + M.config('MAPBOX_URL', 'https://api.mapbox.com/v4/'); + + /** + * TODO + * + * @private + * @type {String} + */ + M.config('MAPBOX_EXTENSION', 'png'); + + /** + * TODO + * + * @private + * @type {String} + */ + M.config('MAPBOX_TOKEN_NAME', 'access_token'); + + /** + * TODO + * + * @private + * @type {String} + */ + M.config('MAPBOX_TOKEN_VALUE', 'pk.eyJ1Ijoic2lnY29ycG9yYXRpdm9qYSIsImEiOiJjaXczZ3hlc2YwMDBrMm9wYnRqd3gyMWQ0In0.wF12VawgDM31l5RcAGb6AA'); + + /** + * Number of pages for the plugin AttributeTable + * + * @private + * @type {String} + */ + M.config('ATTRIBUTETABLE_PAGES', '5'); + + /** + * Zoom levels + * + * @private + * @type {Number} + */ + M.config('ZOOM_LEVELS', '16'); +})(window.M); diff --git a/mapea-legacy/js/mapea-6.2.0.ol.min.js b/mapea-legacy/js/mapea-6.2.0.ol.min.js new file mode 100644 index 000000000..6ead3b651 --- /dev/null +++ b/mapea-legacy/js/mapea-6.2.0.ol.min.js @@ -0,0 +1,101 @@ +!function(t){function e(e){for(var r,i,o=e[0],a=e[1],s=0,u=[];so&&(u|=i.a.RIGHT),la&&(u|=i.a.ABOVE),u===i.a.UNKNOWN&&(u=i.a.INTERSECTING),u}function d(){return[1/0,1/0,-1/0,-1/0]}function g(t,e,r,n,i){return i?(i[0]=t,i[1]=e,i[2]=r,i[3]=n,i):[t,e,r,n]}function y(t){return g(1/0,1/0,-1/0,-1/0,t)}function m(t,e){var r=t[0],n=t[1];return g(r,n,r,n,e)}function _(t,e,r,n,i){return E(y(i),t,e,r,n)}function v(t,e){return t[0]==e[0]&&t[2]==e[2]&&t[1]==e[1]&&t[3]==e[3]}function b(t,e,r){return Math.abs(t[0]-e[0])t[2]&&(t[2]=e[2]),e[1]t[3]&&(t[3]=e[3]),t}function w(t,e){e[0]t[2]&&(t[2]=e[0]),e[1]t[3]&&(t[3]=e[1])}function E(t,e,r,n,i){for(;re[0]?n[0]=t[0]:n[0]=e[0],t[1]>e[1]?n[1]=t[1]:n[1]=e[1],t[2]=e[0]&&t[1]<=e[3]&&t[3]>=e[1]}function G(t){return t[2]=s&&m<=u),n||!(a&i.a.RIGHT)||o&i.a.RIGHT||(n=(_=g-(d-u)*y)>=l&&_<=c),n||!(a&i.a.BELOW)||o&i.a.BELOW||(n=(m=d-(g-l)/y)>=s&&m<=u),n||!(a&i.a.LEFT)||o&i.a.LEFT||(n=(_=g-(d-s)*y)>=l&&_<=c)}return n}function V(t,e,r,n){var i=[];if(n>1)for(var o=t[2]-t[0],a=t[3]-t[1],s=0;s=r[2])){var i=F(r),o=Math.floor((n[0]-r[0])/i)*i;t[0]-=o,t[2]-=o}return t}},function(t,e,r){"use strict";var n,i=r(40),o=r(18),a=r(4),s=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),l=6378137,u=Math.PI*l,c=[-u,-u,u,u],h=[-180,-85,180,85],f=l*Math.log(Math.tan(Math.PI/2)),p=function(t){function e(e){return t.call(this,{code:e,units:o.b.METERS,extent:c,global:!0,worldExtent:h,getPointResolution:function(t,e){return t/Object(a.c)(e[1]/l)}})||this}return s(e,t),e}(i.a),d=[new p("EPSG:3857"),new p("EPSG:102100"),new p("EPSG:102113"),new p("EPSG:900913"),new p("http://www.opengis.net/def/crs/EPSG/0/3857"),new p("http://www.opengis.net/gml/srs/epsg.xml#3857")];function g(t,e,r){var n=t.length,i=r>1?r:2,o=e;void 0===o&&(o=i>2?t.slice():new Array(n));for(var a=0;af?s=f:s<-f&&(s=-f),o[a+1]=s}return o}function y(t,e,r){var n=t.length,i=r>1?r:2,o=e;void 0===o&&(o=i>2?t.slice():new Array(n));for(var a=0;a=2;--u)a[s+u]=e[s+u]}return a}}function F(t,e,r,n){var i=M(t),o=M(e);Object(E.a)(i,o,j(r)),Object(E.a)(o,i,j(n))}function D(t,e){return T(),V(t,"EPSG:4326",void 0!==e?e:"EPSG:3857")}function G(t,e){var r=V(t,void 0!==e?e:"EPSG:3857","EPSG:4326"),n=r[0];return(n<-180||n>180)&&(r[0]=Object(a.g)(n+180,360)-180),r}function U(t,e){if(t===e)return!0;var r=t.getUnits()===e.getUnits();return(t.getCode()===e.getCode()||B(t,e)===P)&&r}function B(t,e){var r=t.getCode(),n=e.getCode(),i=Object(E.c)(r,n);return i||(i=R),i}function z(t,e){return B(M(t),M(e))}function V(t,e,r){return z(e,r)(t,void 0,t.length)}function q(t,e,r,n){var i=z(e,r);return Object(O.a)(t,i,void 0,n)}var Y,W,X,H=null;function Z(t){H=M(t)}function K(){H=null}function J(){return H}function $(){Z("EPSG:4326")}function Q(t,e){return H?V(t,e,H):t}function tt(t,e){return H?V(t,H,e):(C&&!Object(S.g)(t,[0,0])&&t[0]>=-180&&t[0]<=180&&t[1]>=-90&&t[1]<=90&&(C=!1,console.warn("Call useGeographic() from ol/proj once to work with [longitude, latitude] coordinates.")),t)}function et(t,e){return H?q(t,e,H):t}function rt(t,e){return H?q(t,H,e):t}function nt(t,e){if(!H)return t;var r=M(e).getUnits(),n=H.getUnits();return r&&n?t*o.a[r]/o.a[n]:t}function it(t,e){if(!H)return t;var r=M(e).getUnits(),n=H.getUnits();return r&&n?t*o.a[n]/o.a[r]:t}function ot(t,e,r){return function(n){var i,o,s=n[0],l=n[1];if(t.canWrapX()){var u=t.getExtent(),c=Object(O.F)(u);(o=Object(S.i)(n,t,c))&&(s-=o*c),s=Object(a.b)(s,u[0],u[2]),l=Object(a.b)(l,u[1],u[3]),i=r([s,l])}else i=r(n);return o&&e.canWrapX()&&(i[0]+=o*Object(O.F)(e.getExtent())),i}}A(d),A(x),Y=d,W=g,X=y,x.forEach((function(t){Y.forEach((function(e){Object(E.a)(t,e,W),Object(E.a)(e,t,X)}))}))},function(t,e,r){"use strict";e.a={POINT:"Point",LINE_STRING:"LineString",LINEAR_RING:"LinearRing",POLYGON:"Polygon",MULTI_POINT:"MultiPoint",MULTI_LINE_STRING:"MultiLineString",MULTI_POLYGON:"MultiPolygon",GEOMETRY_COLLECTION:"GeometryCollection",CIRCLE:"Circle"}},function(t,e,r){"use strict";function n(){return function(){throw new Error("Unimplemented abstract method.")}()}r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return a}));var i=0;function o(t){return t.ol_uid||(t.ol_uid=String(++i))}var a="6.14.1"},function(t,e,r){"use strict";function n(t,e,r){return Math.min(Math.max(t,e),r)}r.d(e,"b",(function(){return n})),r.d(e,"c",(function(){return i})),r.d(e,"f",(function(){return o})),r.d(e,"k",(function(){return a})),r.d(e,"j",(function(){return s})),r.d(e,"i",(function(){return l})),r.d(e,"l",(function(){return u})),r.d(e,"m",(function(){return c})),r.d(e,"g",(function(){return h})),r.d(e,"e",(function(){return f})),r.d(e,"h",(function(){return d})),r.d(e,"d",(function(){return g})),r.d(e,"a",(function(){return y}));var i="cosh"in Math?Math.cosh:function(t){var e=Math.exp(t);return(e+1/e)/2},o="log2"in Math?Math.log2:function(t){return Math.log(t)*Math.LOG2E};function a(t,e,r,n,i,o){var a=i-r,l=o-n;if(0!==a||0!==l){var u=((t-r)*a+(e-n)*l)/(a*a+l*l);u>1?(r=i,n=o):u>0&&(r+=a*u,n+=l*u)}return s(t,e,r,n)}function s(t,e,r,n){var i=r-t,o=n-e;return i*i+o*o}function l(t){for(var e=t.length,r=0;ri&&(i=a,n=o)}if(0===i)return null;var s=t[n];t[n]=t[r],t[r]=s;for(var l=r+1;l=0;f--){h[f]=t[f][e]/t[f][f];for(var p=f-1;p>=0;p--)t[p][e]-=t[p][f]*h[f]}return h}function u(t){return 180*t/Math.PI}function c(t){return t*Math.PI/180}function h(t,e){var r=t%e;return r*e<0?r+e:r}function f(t,e,r){return t+r*(e-t)}function p(t,e){var r=Math.pow(10,e);return Math.round(t*r)/r}function d(t,e){return Math.round(p(t,e))}function g(t,e){return Math.floor(p(t,e))}function y(t,e){return Math.ceil(p(t,e))}},function(t,e,r){"use strict";r.d(e,"a",(function(){return n})),r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return o})),r.d(e,"d",(function(){return a}));var n="function"==typeof Object.assign?Object.assign:function(t,e){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var r=Object(t),n=1,i=arguments.length;n>1)],e))<0?s=n+1:(l=n,u=!o);return u?s:~s}function i(t,e){return t>e?1:t=0}function a(t,e,r){var n=t.length;if(t[0]<=e)return 0;if(e<=t[n-1])return n-1;var i=void 0;if(r>0){for(i=1;i0?i-1:i:t[i-1]-e>>0,i=0;i0||r&&0===o)}))}r.d(e,"a",(function(){return n})),r.d(e,"i",(function(){return i})),r.d(e,"f",(function(){return o})),r.d(e,"h",(function(){return a})),r.d(e,"j",(function(){return s})),r.d(e,"c",(function(){return l})),r.d(e,"d",(function(){return u})),r.d(e,"b",(function(){return c})),r.d(e,"k",(function(){return h})),r.d(e,"e",(function(){return f})),r.d(e,"g",(function(){return p}))},function(t,e,r){"use strict";e.a={CHANGE:"change",ERROR:"error",BLUR:"blur",CLEAR:"clear",CONTEXTMENU:"contextmenu",CLICK:"click",DBLCLICK:"dblclick",DRAGENTER:"dragenter",DRAGOVER:"dragover",DROP:"drop",FOCUS:"focus",KEYDOWN:"keydown",KEYPRESS:"keypress",LOAD:"load",RESIZE:"resize",TOUCHMOVE:"touchmove",WHEEL:"wheel"}},function(t,e,r){"use strict";r.d(e,"a",(function(){return i})),r.d(e,"b",(function(){return o})),r.d(e,"c",(function(){return a}));var n=r(5);function i(t,e,r,n,i){if(n&&n!==t&&(r=r.bind(n)),i){var o=r;r=function(){t.removeEventListener(e,r),o.apply(this,arguments)}}var a={target:t,type:e,listener:r};return t.addEventListener(e,r),a}function o(t,e,r,n){return i(t,e,r,n,!0)}function a(t){t&&t.target&&(t.target.removeEventListener(t.type,t.listener),Object(n.b)(t))}},function(t,e,r){"use strict";e.a={IDLE:0,LOADING:1,LOADED:2,ERROR:3,EMPTY:4}},function(t,e,r){"use strict";r.d(e,"d",(function(){return s})),r.d(e,"h",(function(){return l})),r.d(e,"g",(function(){return u})),r.d(e,"k",(function(){return h})),r.d(e,"a",(function(){return f})),r.d(e,"i",(function(){return p})),r.d(e,"j",(function(){return d})),r.d(e,"f",(function(){return g})),r.d(e,"m",(function(){return y})),r.d(e,"b",(function(){return m})),r.d(e,"c",(function(){return _})),r.d(e,"e",(function(){return v})),r.d(e,"l",(function(){return b}));var n,i=r(27),o=r(11),a=new Array(6);function s(){return[1,0,0,1,0,0]}function l(t){return c(t,1,0,0,1,0,0)}function u(t,e){var r=t[0],n=t[1],i=t[2],o=t[3],a=t[4],s=t[5],l=e[0],u=e[1],c=e[2],h=e[3],f=e[4],p=e[5];return t[0]=r*l+i*u,t[1]=n*l+o*u,t[2]=r*c+i*h,t[3]=n*c+o*h,t[4]=r*f+i*p+a,t[5]=n*f+o*p+s,t}function c(t,e,r,n,i,o,a){return t[0]=e,t[1]=r,t[2]=n,t[3]=i,t[4]=o,t[5]=a,t}function h(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function f(t,e){var r=e[0],n=e[1];return e[0]=t[0]*r+t[2]*n+t[4],e[1]=t[1]*r+t[3]*n+t[5],e}function p(t,e){var r=Math.cos(e),n=Math.sin(e);return u(t,c(a,r,n,-n,r,0,0))}function d(t,e,r){return u(t,c(a,e,0,0,r,0,0))}function g(t,e,r){return c(t,e,0,0,r,0,0)}function y(t,e,r){return u(t,c(a,1,0,0,1,e,r))}function m(t,e,r,n,i,o,a,s){var l=Math.sin(o),u=Math.cos(o);return t[0]=n*u,t[1]=i*l,t[2]=-n*l,t[3]=i*u,t[4]=a*n*u-s*n*l+e,t[5]=a*i*l+s*i*u+r,t}function _(t,e,r,n,i,o,a){return b(m([1,0,0,1,0,0],t,e,r,n,i,o,a))}function v(t,e){var r,n=(r=e)[0]*r[3]-r[1]*r[2];Object(o.a)(0!==n,32);var i=e[0],a=e[1],s=e[2],l=e[3],u=e[4],c=e[5];return t[0]=l/n,t[1]=-a/n,t[2]=-s/n,t[3]=i/n,t[4]=(s*c-l*u)/n,t[5]=-(i*c-a*u)/n,t}function b(t){var e="matrix("+t.join(", ")+")";if(i.h)return e;var r=n||(n=document.createElement("div"));return r.style.transform=e,r.style.transform}},function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));var n=r(68);function i(t,e){if(!t)throw new n.a(e)}},function(t,e,r){"use strict";r.d(e,"e",(function(){return n})),r.d(e,"f",(function(){return o})),r.d(e,"d",(function(){return a})),r.d(e,"g",(function(){return s})),r.d(e,"h",(function(){return l})),r.d(e,"j",(function(){return u})),r.d(e,"a",(function(){return c})),r.d(e,"c",(function(){return h})),r.d(e,"b",(function(){return f})),r.d(e,"i",(function(){return p}));const n={315:"Artist",258:"BitsPerSample",265:"CellLength",264:"CellWidth",320:"ColorMap",259:"Compression",33432:"Copyright",306:"DateTime",338:"ExtraSamples",266:"FillOrder",289:"FreeByteCounts",288:"FreeOffsets",291:"GrayResponseCurve",290:"GrayResponseUnit",316:"HostComputer",270:"ImageDescription",257:"ImageLength",256:"ImageWidth",271:"Make",281:"MaxSampleValue",280:"MinSampleValue",272:"Model",254:"NewSubfileType",274:"Orientation",262:"PhotometricInterpretation",284:"PlanarConfiguration",296:"ResolutionUnit",278:"RowsPerStrip",277:"SamplesPerPixel",305:"Software",279:"StripByteCounts",273:"StripOffsets",255:"SubfileType",263:"Threshholding",282:"XResolution",283:"YResolution",326:"BadFaxLines",327:"CleanFaxData",343:"ClipPath",328:"ConsecutiveBadFaxLines",433:"Decode",434:"DefaultImageColor",269:"DocumentName",336:"DotRange",321:"HalftoneHints",346:"Indexed",347:"JPEGTables",285:"PageName",297:"PageNumber",317:"Predictor",319:"PrimaryChromaticities",532:"ReferenceBlackWhite",339:"SampleFormat",340:"SMinSampleValue",341:"SMaxSampleValue",559:"StripRowCounts",330:"SubIFDs",292:"T4Options",293:"T6Options",325:"TileByteCounts",323:"TileLength",324:"TileOffsets",322:"TileWidth",301:"TransferFunction",318:"WhitePoint",344:"XClipPathUnits",286:"XPosition",529:"YCbCrCoefficients",531:"YCbCrPositioning",530:"YCbCrSubSampling",345:"YClipPathUnits",287:"YPosition",37378:"ApertureValue",40961:"ColorSpace",36868:"DateTimeDigitized",36867:"DateTimeOriginal",34665:"Exif IFD",36864:"ExifVersion",33434:"ExposureTime",41728:"FileSource",37385:"Flash",40960:"FlashpixVersion",33437:"FNumber",42016:"ImageUniqueID",37384:"LightSource",37500:"MakerNote",37377:"ShutterSpeedValue",37510:"UserComment",33723:"IPTC",34675:"ICC Profile",700:"XMP",42112:"GDAL_METADATA",42113:"GDAL_NODATA",34377:"Photoshop",33550:"ModelPixelScale",33922:"ModelTiepoint",34264:"ModelTransformation",34735:"GeoKeyDirectory",34736:"GeoDoubleParams",34737:"GeoAsciiParams",50674:"LercParameters"},i={};for(const t in n)n.hasOwnProperty(t)&&(i[n[t]]=parseInt(t,10));const o={256:"SHORT",257:"SHORT",258:"SHORT",259:"SHORT",262:"SHORT",273:"LONG",274:"SHORT",277:"SHORT",278:"LONG",279:"LONG",282:"RATIONAL",283:"RATIONAL",284:"SHORT",286:"SHORT",287:"RATIONAL",296:"SHORT",297:"SHORT",305:"ASCII",306:"ASCII",338:"SHORT",339:"SHORT",513:"LONG",514:"LONG",1024:"SHORT",1025:"SHORT",2048:"SHORT",2049:"ASCII",3072:"SHORT",3073:"ASCII",33550:"DOUBLE",33922:"DOUBLE",34665:"LONG",34735:"SHORT",34737:"ASCII",42113:"ASCII"},a=[i.BitsPerSample,i.ExtraSamples,i.SampleFormat,i.StripByteCounts,i.StripOffsets,i.StripRowCounts,i.TileByteCounts,i.TileOffsets,i.SubIFDs],s={1:"BYTE",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",6:"SBYTE",7:"UNDEFINED",8:"SSHORT",9:"SLONG",10:"SRATIONAL",11:"FLOAT",12:"DOUBLE",13:"IFD",16:"LONG8",17:"SLONG8",18:"IFD8"},l={};for(const t in s)s.hasOwnProperty(t)&&(l[s[t]]=parseInt(t,10));const u={WhiteIsZero:0,BlackIsZero:1,RGB:2,Palette:3,TransparencyMask:4,CMYK:5,YCbCr:6,CIELab:8,ICCLab:9},c={Unspecified:0,Assocalpha:1,Unassalpha:2},h={Version:0,AddCompression:1},f={None:0,Deflate:1},p={1024:"GTModelTypeGeoKey",1025:"GTRasterTypeGeoKey",1026:"GTCitationGeoKey",2048:"GeographicTypeGeoKey",2049:"GeogCitationGeoKey",2050:"GeogGeodeticDatumGeoKey",2051:"GeogPrimeMeridianGeoKey",2052:"GeogLinearUnitsGeoKey",2053:"GeogLinearUnitSizeGeoKey",2054:"GeogAngularUnitsGeoKey",2055:"GeogAngularUnitSizeGeoKey",2056:"GeogEllipsoidGeoKey",2057:"GeogSemiMajorAxisGeoKey",2058:"GeogSemiMinorAxisGeoKey",2059:"GeogInvFlatteningGeoKey",2060:"GeogAzimuthUnitsGeoKey",2061:"GeogPrimeMeridianLongGeoKey",2062:"GeogTOWGS84GeoKey",3072:"ProjectedCSTypeGeoKey",3073:"PCSCitationGeoKey",3074:"ProjectionGeoKey",3075:"ProjCoordTransGeoKey",3076:"ProjLinearUnitsGeoKey",3077:"ProjLinearUnitSizeGeoKey",3078:"ProjStdParallel1GeoKey",3079:"ProjStdParallel2GeoKey",3080:"ProjNatOriginLongGeoKey",3081:"ProjNatOriginLatGeoKey",3082:"ProjFalseEastingGeoKey",3083:"ProjFalseNorthingGeoKey",3084:"ProjFalseOriginLongGeoKey",3085:"ProjFalseOriginLatGeoKey",3086:"ProjFalseOriginEastingGeoKey",3087:"ProjFalseOriginNorthingGeoKey",3088:"ProjCenterLongGeoKey",3089:"ProjCenterLatGeoKey",3090:"ProjCenterEastingGeoKey",3091:"ProjCenterNorthingGeoKey",3092:"ProjScaleAtNatOriginGeoKey",3093:"ProjScaleAtCenterGeoKey",3094:"ProjAzimuthAngleGeoKey",3095:"ProjStraightVertPoleLongGeoKey",3096:"ProjRectifiedGridAngleGeoKey",4096:"VerticalCSTypeGeoKey",4097:"VerticalCitationGeoKey",4098:"VerticalDatumGeoKey",4099:"VerticalUnitsGeoKey"},d={};for(const t in p)p.hasOwnProperty(t)&&(d[p[t]]=parseInt(t,10))},function(t,e,r){"use strict";r.d(e,"a",(function(){return a})),r.d(e,"b",(function(){return s})),r.d(e,"c",(function(){return l})),r.d(e,"d",(function(){return u})),r.d(e,"e",(function(){return c})),r.d(e,"h",(function(){return h})),r.d(e,"g",(function(){return f})),r.d(e,"j",(function(){return p})),r.d(e,"k",(function(){return d})),r.d(e,"l",(function(){return g})),r.d(e,"f",(function(){return y})),r.d(e,"m",(function(){return m})),r.d(e,"n",(function(){return _})),r.d(e,"o",(function(){return v})),r.d(e,"p",(function(){return b})),r.d(e,"i",(function(){return x}));var n=r(0),i=r(4),o=r(49);function a(t,e){return t[0]+=+e[0],t[1]+=+e[1],t}function s(t,e){var r=e.getRadius(),n=e.getCenter(),i=n[0],o=n[1],a=t[0]-i,s=t[1]-o;0===a&&0===s&&(a=1);var l=Math.sqrt(a*a+s*s);return[i+r*a/l,o+r*s/l]}function l(t,e){var r,n,i=t[0],o=t[1],a=e[0],s=e[1],l=a[0],u=a[1],c=s[0],h=s[1],f=c-l,p=h-u,d=0===f&&0===p?0:(f*(i-l)+p*(o-u))/(f*f+p*p||0);return d<=0?(r=l,n=u):d>=1?(r=c,n=h):(r=l+d*f,n=u+d*p),[r,n]}function u(t){return function(e){return v(e,t)}}function c(t,e,r){var n=Object(i.g)(e+180,360)-180,a=Math.abs(3600*n),s=r||0,l=Math.pow(10,s),u=Math.floor(a/3600),c=Math.floor((a-3600*u)/60),h=a-3600*u-60*c;return(h=Math.ceil(h*l)/l)>=60&&(h=0,c+=1),c>=60&&(c=0,u+=1),u+"° "+Object(o.b)(c,2)+"′ "+Object(o.b)(h,2,s)+"″"+(0==n?"":" "+t.charAt(n<0?1:0))}function h(t,e,r){return t?e.replace("{x}",t[0].toFixed(r)).replace("{y}",t[1].toFixed(r)):""}function f(t,e){for(var r=!0,n=t.length-1;n>=0;--n)if(t[n]!=e[n]){r=!1;break}return r}function p(t,e){var r=Math.cos(e),n=Math.sin(e),i=t[0]*r-t[1]*n,o=t[1]*r+t[0]*n;return t[0]=i,t[1]=o,t}function d(t,e){return t[0]*=e,t[1]*=e,t}function g(t,e){var r=t[0]-e[0],n=t[1]-e[1];return r*r+n*n}function y(t,e){return Math.sqrt(g(t,e))}function m(t,e){return g(t,l(t,e))}function _(t,e){return t?c("NS",t[1],e)+" "+c("EW",t[0],e):""}function v(t,e){return h(t,"{x}, {y}",e)}function b(t,e){if(e.canWrapX()){var r=Object(n.F)(e.getExtent()),i=x(t,e,r);i&&(t[0]-=i*r)}return t}function x(t,e,r){var i=e.getExtent(),o=0;if(e.canWrapX()&&(t[0]i[2])){var a=r||Object(n.F)(i);o=Math.floor((t[0]-i[0])/a)}return o}},function(t,e,r){"use strict";e.a={IDLE:0,LOADING:1,LOADED:2,ERROR:3,EMPTY:4}},function(t,e,r){"use strict";r.d(e,"a",(function(){return i})),r.d(e,"c",(function(){return o})),r.d(e,"b",(function(){return a})),r.d(e,"g",(function(){return s})),r.d(e,"e",(function(){return l})),r.d(e,"d",(function(){return u})),r.d(e,"f",(function(){return c}));var n=r(27);function i(t,e,r,i){var o;return o=r&&r.length?r.shift():n.h?new OffscreenCanvas(t||300,e||300):document.createElement("canvas"),t&&(o.width=t),e&&(o.height=e),o.getContext("2d",i)}function o(t){var e=t.offsetWidth,r=getComputedStyle(t);return e+=parseInt(r.marginLeft,10)+parseInt(r.marginRight,10)}function a(t){var e=t.offsetHeight,r=getComputedStyle(t);return e+=parseInt(r.marginTop,10)+parseInt(r.marginBottom,10)}function s(t,e){var r=e.parentNode;r&&r.replaceChild(t,e)}function l(t){return t&&t.parentNode?t.parentNode.removeChild(t):null}function u(t){for(;t.lastChild;)t.removeChild(t.lastChild)}function c(t,e){for(var r=t.childNodes,n=0;;++n){var i=r[n],o=e[n];if(!i&&!o)break;i!==o&&(i?o?t.insertBefore(o,i):(t.removeChild(i),--n):t.appendChild(o))}}},function(t,e,r){"use strict";function n(t,e,r){return void 0===r&&(r=[0,0]),r[0]=t[0]+2*e,r[1]=t[1]+2*e,r}function i(t){return t[0]>0&&t[1]>0}function o(t,e,r){return void 0===r&&(r=[0,0]),r[0]=t[0]*e+.5|0,r[1]=t[1]*e+.5|0,r}function a(t,e){return Array.isArray(t)?t:(void 0===e?e=[t,t]:(e[0]=t,e[1]=t),e)}r.d(e,"a",(function(){return n})),r.d(e,"b",(function(){return i})),r.d(e,"c",(function(){return o})),r.d(e,"d",(function(){return a}))},function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"a",(function(){return o})),r.d(e,"c",(function(){return a})),r.d(e,"d",(function(){return s})),r.d(e,"e",(function(){return l}));var n=r(6);function i(){return!0}function o(){return!1}function a(){}function s(t){var e,r,i,o=!1;return function(){var a=Array.prototype.slice.call(arguments);return o&&this===i&&Object(n.b)(a,r)||(o=!0,i=this,r=a,e=t.apply(this,arguments)),e}}function l(t){return function(){var e;try{e=t()}catch(t){return Promise.reject(t)}return e instanceof Promise?e:Promise.resolve(e)}()}},function(t,e,r){"use strict";r.d(e,"c",(function(){return o})),r.d(e,"a",(function(){return a}));var n={RADIANS:"radians",DEGREES:"degrees",FEET:"ft",METERS:"m",PIXELS:"pixels",TILE_PIXELS:"tile-pixels",USFEET:"us-ft"},i={9001:n.METERS,9002:n.FEET,9003:n.USFEET,9101:n.RADIANS,9102:n.DEGREES};function o(t){return i[t]}var a={};a[n.RADIANS]=6370997/(2*Math.PI),a[n.DEGREES]=2*Math.PI*6370997/360,a[n.FEET]=.3048,a[n.METERS]=1,a[n.USFEET]=1200/3937,e.b=n},function(t,e,r){"use strict";e.a={UNDEFINED:"undefined",LOADING:"loading",READY:"ready",ERROR:"error"}},function(t,e,r){"use strict";r.d(e,"c",(function(){return n})),r.d(e,"d",(function(){return i})),r.d(e,"e",(function(){return o})),r.d(e,"f",(function(){return a})),r.d(e,"b",(function(){return s})),r.d(e,"a",(function(){return l})),r.d(e,"h",(function(){return h})),r.d(e,"g",(function(){return f}));var n="ol-hidden",i="ol-selectable",o="ol-unselectable",a="ol-unsupported",s="ol-control",l="ol-collapsed",u=new RegExp(["^\\s*(?=(?:(?:[-a-z]+\\s*){0,2}(italic|oblique))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(small-caps))?)","(?=(?:(?:[-a-z]+\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)","(?:(?:normal|\\1|\\2|\\3)\\s*){0,3}((?:xx?-)?","(?:small|large)|medium|smaller|larger|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx]))","(?:\\s*\\/\\s*(normal|[\\.\\d]+(?:\\%|in|[cem]m|ex|p[ctx])?))","?\\s*([-,\\\"\\'\\sa-z]+?)\\s*$"].join(""),"i"),c=["style","variant","weight","size","lineHeight","family"],h=function(t){var e=t.match(u);if(!e)return null;for(var r={lineHeight:"normal",size:"1.2em",style:"normal",weight:"normal",variant:"normal"},n=0,i=c.length;nr||r>e.getMaxZoom())return!1;var o=e.getFullTileRange(r);return!o||o.containsXY(n,i)}r.d(e,"a",(function(){return n})),r.d(e,"e",(function(){return i})),r.d(e,"d",(function(){return o})),r.d(e,"c",(function(){return a})),r.d(e,"b",(function(){return s})),r.d(e,"f",(function(){return l})),r.d(e,"g",(function(){return u}))},function(t,e,r){"use strict";r.d(e,"b",(function(){return s})),r.d(e,"c",(function(){return h})),r.d(e,"a",(function(){return f})),r.d(e,"e",(function(){return d})),r.d(e,"d",(function(){return g}));var n=r(11),i=r(4),o=/^#([a-f0-9]{3}|[a-f0-9]{4}(?:[a-f0-9]{2}){0,2})$/i,a=/^([a-z]*)$|^hsla?\(.*\)$/i;function s(t){return"string"==typeof t?t:d(t)}function l(t){var e=document.createElement("div");if(e.style.color=t,""!==e.style.color){document.body.appendChild(e);var r=getComputedStyle(e).color;return document.body.removeChild(e),r}return""}var u,c,h=(u={},c=0,function(t){var e;if(u.hasOwnProperty(t))e=u[t];else{if(c>=1024){var r=0;for(var i in u)0==(3&r++)&&(delete u[i],--c)}e=function(t){var e,r,i,s,u;if(a.exec(t)&&(t=l(t)),o.exec(t)){var c=t.length-1,h=void 0;h=c<=4?1:2;var f=4===c||8===c;e=parseInt(t.substr(1+0*h,h),16),r=parseInt(t.substr(1+1*h,h),16),i=parseInt(t.substr(1+2*h,h),16),s=f?parseInt(t.substr(1+3*h,h),16):255,1==h&&(e=(e<<4)+e,r=(r<<4)+r,i=(i<<4)+i,f&&(s=(s<<4)+s)),u=[e,r,i,s/255]}else 0==t.indexOf("rgba(")?p(u=t.slice(5,-1).split(",").map(Number)):0==t.indexOf("rgb(")?((u=t.slice(4,-1).split(",").map(Number)).push(1),p(u)):Object(n.a)(!1,14);return u}(t),u[t]=e,++c}return e});function f(t){return Array.isArray(t)?t:h(t)}function p(t){return t[0]=Object(i.b)(t[0]+.5|0,0,255),t[1]=Object(i.b)(t[1]+.5|0,0,255),t[2]=Object(i.b)(t[2]+.5|0,0,255),t[3]=Object(i.b)(t[3],0,1),t}function d(t){var e=t[0];e!=(0|e)&&(e=e+.5|0);var r=t[1];r!=(0|r)&&(r=r+.5|0);var n=t[2];return n!=(0|n)&&(n=n+.5|0),"rgba("+e+","+r+","+n+","+(void 0===t[3]?1:Math.round(100*t[3])/100)+")"}function g(t){return a.test(t)&&(t=l(t)),o.test(t)||0===t.indexOf("rgba(")||0===t.indexOf("rgb(")}},function(t,e,r){"use strict";e.a={ANIMATING:0,INTERACTING:1}},function(t,e,r){"use strict";function n(t,e){for(const r in e)e.hasOwnProperty(r)&&(t[r]=e[r])}function i(t,e){if(t.lengthsetTimeout(e,t))}function u(t,e){const r=Array.isArray(t)?t:Array.from(t),n=Array.isArray(e)?e:Array.from(e);return r.map((t,e)=>[t,n[e]])}r.d(e,"c",(function(){return n})),r.d(e,"d",(function(){return i})),r.d(e,"e",(function(){return o})),r.d(e,"f",(function(){return a})),r.d(e,"g",(function(){return s})),r.d(e,"h",(function(){return l})),r.d(e,"i",(function(){return u})),r.d(e,"a",(function(){return c})),r.d(e,"b",(function(){return f}));class c extends Error{constructor(t){super(t),Error.captureStackTrace&&Error.captureStackTrace(this,c),this.name="AbortError"}}class h extends Error{constructor(t,e){super(e),this.errors=t,this.message=e,this.name="AggregateError"}}const f=h},function(t,e,r){"use strict";e.a={OPACITY:"opacity",VISIBLE:"visible",EXTENT:"extent",Z_INDEX:"zIndex",MAX_RESOLUTION:"maxResolution",MIN_RESOLUTION:"minResolution",MAX_ZOOM:"maxZoom",MIN_ZOOM:"minZoom",SOURCE:"source",MAP:"map"}},function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"f",(function(){return o})),r.d(e,"g",(function(){return a})),r.d(e,"d",(function(){return s})),r.d(e,"a",(function(){return l})),r.d(e,"h",(function(){return u})),r.d(e,"c",(function(){return c})),r.d(e,"e",(function(){return h}));var n="undefined"!=typeof navigator&&void 0!==navigator.userAgent?navigator.userAgent.toLowerCase():"",i=-1!==n.indexOf("firefox"),o=-1!==n.indexOf("safari")&&-1==n.indexOf("chrom")&&!!(n.indexOf("version/15.4")>=0||n.match(/cpu (os|iphone os) 15_4 like mac os x/)),a=-1!==n.indexOf("webkit")&&-1==n.indexOf("edge"),s=-1!==n.indexOf("macintosh"),l="undefined"!=typeof devicePixelRatio?devicePixelRatio:1,u="undefined"!=typeof WorkerGlobalScope&&"undefined"!=typeof OffscreenCanvas&&self instanceof WorkerGlobalScope,c="undefined"!=typeof Image&&Image.prototype.decode,h=function(){var t=!1;try{var e=Object.defineProperty({},"passive",{get:function(){t=!0}});window.addEventListener("_",null,e),window.removeEventListener("_",null,e)}catch(t){}return t}()},function(t,e,r){"use strict";function n(t){return Math.pow(t,3)}function i(t){return 1-n(1-t)}function o(t){return 3*t*t-2*t*t*t}function a(t){return t}function s(t){return t<.5?o(2*t):1-o(2*(t-.5))}r.r(e),r.d(e,"easeIn",(function(){return n})),r.d(e,"easeOut",(function(){return i})),r.d(e,"inAndOut",(function(){return o})),r.d(e,"linear",(function(){return a})),r.d(e,"upAndDown",(function(){return s}))},function(t,e,r){"use strict";r.d(e,"d",(function(){return c})),r.d(e,"e",(function(){return h})),r.d(e,"b",(function(){return f})),r.d(e,"a",(function(){return d})),r.d(e,"c",(function(){return g}));var n=r(66),i=r(37),o=r(18),a=r(50),s=r(1),l=r(0),u=r(16);function c(t){var e=t.getDefaultTileGrid();return e||(e=d(t),t.setDefaultTileGrid(e)),e}function h(t,e,r){var n=e[0],i=t.getTileCoordCenter(e),o=g(r);if(Object(l.g)(o,i))return e;var a=Object(l.F)(o),s=Math.ceil((o[0]-i[0])/a);return i[0]+=a*s,t.getTileCoordForCoordAndZ(i,n)}function f(t){var e=t||{},r=e.extent||Object(s.o)("EPSG:3857").getExtent(),n={extent:r,minZoom:e.minZoom,tileSize:e.tileSize,resolutions:p(r,e.maxZoom,e.tileSize,e.maxResolution)};return new i.a(n)}function p(t,e,r,n){for(var i=void 0!==e?e:a.a,o=Object(l.A)(t),s=Object(l.F)(t),c=Object(u.d)(void 0!==r?r:a.b),h=n>0?n:Math.max(s/c[0],o/c[1]),f=i+1,p=new Array(f),d=0;dr&&(t=r),t},St=function(t){return t.length>=3?Array.prototype.slice.call(t):t[0]},E=function(t){var e,r;for(t._clipped=!1,t._unclipped=t.slice(0),e=r=0;r<3;e=++r)e<3?((t[e]<0||t[e]>255)&&(t._clipped=!0),t[e]<0&&(t[e]=0),t[e]>255&&(t[e]=255)):3===e&&(t[e]<0&&(t[e]=0),t[e]>1&&(t[e]=1));return t._clipped||delete t._unclipped,t},a=Math.PI,vt=Math.round,S=Math.cos,R=Math.floor,nt=Math.pow,K=Math.log,xt=Math.sin,wt=Math.sqrt,y=Math.atan2,Q=Math.max,g=Math.abs,u=2*a,s=a/3,i=a/180,l=180/a,(w=function(){return arguments[0]instanceof n?arguments[0]:function(t,e,r){r.prototype=t.prototype;var n=new r,i=t.apply(n,e);return Object(i)===i?i:n}(n,arguments,(function(){}))}).default=w,d=[],null!==t&&null!=t.exports&&(t.exports=w),void 0===(r=function(){return w}.apply(e,[]))||(t.exports=r),w.version="1.4.0",p={},h=[],f=!1,n=function(){function t(){var t,e,r,n,i,o,a,s,l;for(o=this,e=[],s=0,n=arguments.length;s1&&(a=e[e.length-1]),null!=p[a])o._rgb=E(p[a](St(e.slice(0,-1))));else{for(f||(h=h.sort((function(t,e){return e.p-t.p})),f=!0),l=0,i=h.length;l3?e[3]:1]},Tt=function(t){return 255*(t<=.00304?12.92*t:1.055*nt(t,1/2.4)-.055)},Y=function(t){return t>o.t1?t*t*t:o.t2*(t-o.t0)},o={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ht=function(){var t,e,r,n,i,o,a;return r=(n=St(arguments))[0],e=n[1],t=n[2],o=(i=yt(r,e,t))[0],[116*(a=i[1])-16,500*(o-a),200*(a-i[2])]},mt=function(t){return(t/=255)<=.04045?t/12.92:nt((t+.055)/1.055,2.4)},Ct=function(t){return t>o.t3?nt(t,1/3):t/o.t2+o.t0},yt=function(){var t,e,r,n;return r=(n=St(arguments))[0],e=n[1],t=n[2],r=mt(r),e=mt(e),t=mt(t),[Ct((.4124564*r+.3575761*e+.1804375*t)/o.Xn),Ct((.2126729*r+.7151522*e+.072175*t)/o.Yn),Ct((.0193339*r+.119192*e+.9503041*t)/o.Zn)]},w.lab=function(){return function(t,e,r){r.prototype=t.prototype;var n=new r,i=t.apply(n,e);return Object(i)===i?i:n}(n,Pt.call(arguments).concat(["lab"]),(function(){}))},p.lab=q,n.prototype.lab=function(){return ht(this._rgb)},m=function(t){var e,r,n,i,o,a,s,l,u,c,h;return 2===(t=function(){var e,r,n;for(n=[],r=0,e=t.length;r=0&&e[3]<=1?"rgb":void 0}}),p.lrgb=p.rgb,U=function(t,e,r,i){var o,a;return o=t._rgb,a=e._rgb,new n(wt(nt(o[0],2)*(1-r)+nt(a[0],2)*r),wt(nt(o[1],2)*(1-r)+nt(a[1],2)*r),wt(nt(o[2],2)*(1-r)+nt(a[2],2)*r),i)},c=function(t){var e,r,i,o,a;for(e=1/t.length,a=[0,0,0,0],i=0,r=t.length;i1&&(a[3]=1),new n(E(a))},d.push(["lrgb",U]),w.average=function(t,e){var r,n,i,o,s,l,u,h,f,p,d,g,m;if(null==e&&(e="rgb"),f=t.length,u=(t=t.map((function(t){return w(t)}))).splice(0,1)[0],"lrgb"===e)return c(t);for(h in o=[],s=0,l=0,g=u.get(e))g[h]=g[h]||0,o.push(isNaN(g[h])?0:1),"h"!==e.charAt(h)||isNaN(g[h])||(r=g[h]/180*a,s+=S(r),l+=xt(r));for(n=u.alpha(),d=0,p=t.length;d=360;)r-=360;g[h]=r}else g[h]=g[h]/o[h];return w(g,e).alpha(n/f)},M=function(t){var e,r;if(t.match(/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/))return 4!==t.length&&7!==t.length||(t=t.substr(1)),3===t.length&&(t=(t=t.split(""))[0]+t[0]+t[1]+t[1]+t[2]+t[2]),[(r=parseInt(t,16))>>16,r>>8&255,255&r,1];if(t.match(/^#?([A-Fa-f0-9]{8})$/))return 9===t.length&&(t=t.substr(1)),[(r=parseInt(t,16))>>24&255,r>>16&255,r>>8&255,vt((255&r)/255*100)/100];if(null!=p.css&&(e=p.css(t)))return e;throw"unknown color: "+t},st=function(t,e){var r,n,i,o,a,s;return null==e&&(e="auto"),a=t[0],i=t[1],n=t[2],r=t[3],"auto"===e&&(e=r<1?"rgba":"rgb"),a=Math.round(a),i=Math.round(i),n=Math.round(n),s=(s="000000"+(a<<16|i<<8|n).toString(16)).substr(s.length-6),o=(o="0"+vt(255*r).toString(16)).substr(o.length-2),"#"+function(){switch(e.toLowerCase()){case"rgba":return s+o;case"argb":return o+s;default:return s}}()},p.hex=function(t){return M(t)},w.hex=function(){return function(t,e,r){r.prototype=t.prototype;var n=new r,i=t.apply(n,e);return Object(i)===i?i:n}(n,Pt.call(arguments).concat(["hex"]),(function(){}))},n.prototype.hex=function(t){return null==t&&(t="auto"),st(this._rgb,t)},h.push({p:4,test:function(t){if(1===arguments.length&&"string"===Ot(t))return"hex"}}),k=function(){var t,e,r,n,i,o,a,s,l,u,c,h,f,p;if(i=(t=St(arguments))[0],c=t[1],a=t[2],0===c)l=n=e=255*a;else{for(r=[0,0,0],h=2*a-(f=a<.5?a*(1+c):a+c-a*c),(p=[0,0,0])[0]=(i/=360)+1/3,p[1]=i,p[2]=i-1/3,o=s=0;s<=2;o=++s)p[o]<0&&(p[o]+=1),p[o]>1&&(p[o]-=1),6*p[o]<1?r[o]=h+6*(f-h)*p[o]:2*p[o]<1?r[o]=f:3*p[o]<2?r[o]=h+(f-h)*(2/3-p[o])*6:r[o]=h;l=(u=[vt(255*r[0]),vt(255*r[1]),vt(255*r[2])])[0],n=u[1],e=u[2]}return t.length>3?[l,n,e,t[3]]:[l,n,e]},ut=function(t,e,r){var n,i,o,a,s;return void 0!==t&&t.length>=3&&(t=(a=t)[0],e=a[1],r=a[2]),t/=255,e/=255,r/=255,o=Math.min(t,e,r),i=((Q=Math.max(t,e,r))+o)/2,Q===o?(s=0,n=Number.NaN):s=i<.5?(Q-o)/(Q+o):(Q-o)/(2-Q-o),t===Q?n=(e-r)/(Q-o):e===Q?n=2+(r-t)/(Q-o):r===Q&&(n=4+(t-e)/(Q-o)),(n*=60)<0&&(n+=360),[n,s,i]},w.hsl=function(){return function(t,e,r){r.prototype=t.prototype;var n=new r,i=t.apply(n,e);return Object(i)===i?i:n}(n,Pt.call(arguments).concat(["hsl"]),(function(){}))},p.hsl=k,n.prototype.hsl=function(){return ut(this._rgb)},j=function(){var t,e,r,n,i,o,a,s,l,u,c,h,f,p,d,g,y,m;if(i=(t=St(arguments))[0],g=t[1],m=t[2],m*=255,0===g)l=n=e=m;else switch(360===i&&(i=0),i>360&&(i-=360),i<0&&(i+=360),a=m*(1-g),s=m*(1-g*(r=(i/=60)-(o=R(i)))),y=m*(1-g*(1-r)),o){case 0:l=(u=[m,y,a])[0],n=u[1],e=u[2];break;case 1:l=(c=[s,m,a])[0],n=c[1],e=c[2];break;case 2:l=(h=[a,m,y])[0],n=h[1],e=h[2];break;case 3:l=(f=[a,s,m])[0],n=f[1],e=f[2];break;case 4:l=(p=[y,a,m])[0],n=p[1],e=p[2];break;case 5:l=(d=[m,a,s])[0],n=d[1],e=d[2]}return[l,n,e,t.length>3?t[3]:1]},ct=function(){var t,e,r,n,i,o,a,s,l;return o=(a=St(arguments))[0],r=a[1],t=a[2],i=Math.min(o,r,t),e=(Q=Math.max(o,r,t))-i,l=Q/255,0===Q?(n=Number.NaN,s=0):(s=e/Q,o===Q&&(n=(r-t)/e),r===Q&&(n=2+(t-o)/e),t===Q&&(n=4+(o-r)/e),(n*=60)<0&&(n+=360)),[n,s,l]},w.hsv=function(){return function(t,e,r){r.prototype=t.prototype;var n=new r,i=t.apply(n,e);return Object(i)===i?i:n}(n,Pt.call(arguments).concat(["hsv"]),(function(){}))},p.hsv=j,n.prototype.hsv=function(){return ct(this._rgb)},et=function(t){return"number"===Ot(t)&&t>=0&&t<=16777215?[t>>16,t>>8&255,255&t,1]:(console.warn("unknown num color: "+t),[0,0,0,1])},dt=function(){var t;return((t=St(arguments))[0]<<16)+(t[1]<<8)+t[2]},w.num=function(t){return new n(t,"num")},n.prototype.num=function(t){return null==t&&(t="rgb"),dt(this._rgb,t)},p.num=et,h.push({p:1,test:function(t){if(1===arguments.length&&"number"===Ot(t)&&t>=0&&t<=16777215)return"num"}}),L=function(){var t,e,r,n,i,o,a,s,l,u,c,h,f,p,d,g,y,m,_,v;if(s=(r=St(arguments))[0],i=r[1],e=r[2],a=a/100*255,t=255*(i/=100),0===i)h=a=n=e;else switch(360===s&&(s=0),s>360&&(s-=360),s<0&&(s+=360),c=(u=e*(1-i))+t*(1-(o=(s/=60)-(l=R(s)))),_=u+t*o,v=u+t,l){case 0:h=(f=[v,_,u])[0],a=f[1],n=f[2];break;case 1:h=(p=[c,v,u])[0],a=p[1],n=p[2];break;case 2:h=(d=[u,v,_])[0],a=d[1],n=d[2];break;case 3:h=(g=[u,c,v])[0],a=g[1],n=g[2];break;case 4:h=(y=[_,u,v])[0],a=y[1],n=y[2];break;case 5:h=(m=[v,u,c])[0],a=m[1],n=m[2]}return[h,a,n,r.length>3?r[3]:1]},at=function(){var t,e,r,n,i,o,a,s,l;return s=(l=St(arguments))[0],i=l[1],e=l[2],a=Math.min(s,i,e),r=100*(n=(Q=Math.max(s,i,e))-a)/255,t=a/(255-n)*100,0===n?o=Number.NaN:(s===Q&&(o=(i-e)/n),i===Q&&(o=2+(e-s)/n),e===Q&&(o=4+(s-i)/n),(o*=60)<0&&(o+=360)),[o,r,t]},w.hcg=function(){return function(t,e,r){r.prototype=t.prototype;var n=new r,i=t.apply(n,e);return Object(i)===i?i:n}(n,Pt.call(arguments).concat(["hcg"]),(function(){}))},p.hcg=L,n.prototype.hcg=function(){return at(this._rgb)},I=function(t){var e,r,n,i,o,a,s,l;if(t=t.toLowerCase(),null!=w.colors&&w.colors[t])return M(w.colors[t]);if(o=t.match(/rgb\(\s*(\-?\d+),\s*(\-?\d+)\s*,\s*(\-?\d+)\s*\)/)){for(s=o.slice(1,4),i=a=0;a<=2;i=++a)s[i]=+s[i];s[3]=1}else if(o=t.match(/rgba\(\s*(\-?\d+),\s*(\-?\d+)\s*,\s*(\-?\d+)\s*,\s*([01]|[01]?\.\d+)\)/))for(s=o.slice(1,5),i=l=0;l<=3;i=++l)s[i]=+s[i];else if(o=t.match(/rgb\(\s*(\-?\d+(?:\.\d+)?)%,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*\)/)){for(s=o.slice(1,4),i=e=0;e<=2;i=++e)s[i]=vt(2.55*s[i]);s[3]=1}else if(o=t.match(/rgba\(\s*(\-?\d+(?:\.\d+)?)%,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)/)){for(s=o.slice(1,5),i=r=0;r<=2;i=++r)s[i]=vt(2.55*s[i]);s[3]=+s[3]}else(o=t.match(/hsl\(\s*(\-?\d+(?:\.\d+)?),\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*\)/))?((n=o.slice(1,4))[1]*=.01,n[2]*=.01,(s=k(n))[3]=1):(o=t.match(/hsla\(\s*(\-?\d+(?:\.\d+)?),\s*(\-?\d+(?:\.\d+)?)%\s*,\s*(\-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)/))&&((n=o.slice(1,4))[1]*=.01,n[2]*=.01,(s=k(n))[3]=+o[4]);return s},ot=function(t){var e;return"rgb"===(e=t[3]<1?"rgba":"rgb")?e+"("+t.slice(0,3).map(vt).join(",")+")":"rgba"===e?e+"("+t.slice(0,3).map(vt).join(",")+","+t[3]+")":void 0},_t=function(t){return vt(100*t)/100},A=function(t,e){var r;return r=e<1?"hsla":"hsl",t[0]=_t(t[0]||0),t[1]=_t(100*t[1])+"%",t[2]=_t(100*t[2])+"%","hsla"===r&&(t[3]=e),r+"("+t.join(",")+")"},p.css=function(t){return I(t)},w.css=function(){return function(t,e,r){r.prototype=t.prototype;var n=new r,i=t.apply(n,e);return Object(i)===i?i:n}(n,Pt.call(arguments).concat(["css"]),(function(){}))},n.prototype.css=function(t){return null==t&&(t="rgb"),"rgb"===t.slice(0,3)?ot(this._rgb):"hsl"===t.slice(0,3)?A(this.hsl(),this.alpha()):void 0},p.named=function(t){return M(It[t])},h.push({p:5,test:function(t){if(1===arguments.length&&null!=It[t])return"named"}}),n.prototype.name=function(t){var e,r;for(r in arguments.length&&(It[t]&&(this._rgb=M(It[t])),this._rgb[3]=1),e=this.hex("rgb"),It)if(e===It[r])return r;return e},W=function(){var t,e,r,n;return r=(n=St(arguments))[0],t=n[1],e=n[2],[r,S(e*=i)*t,xt(e)*t]},X=function(){var t,e,r,n,i,o,a,s,l;return a=(r=St(arguments))[0],i=r[1],o=r[2],t=(s=W(a,i,o))[0],e=s[1],n=s[2],[(l=q(t,e,n))[0],l[1],n=l[2],r.length>3?r[3]:1]},V=function(){var t,e,r,n,i,o;return i=(o=St(arguments))[0],t=o[1],e=o[2],r=wt(t*t+e*e),n=(y(e,t)*l+360)%360,0===vt(1e4*r)&&(n=Number.NaN),[i,r,n]},ft=function(){var t,e,r,n,i,o,a;return i=(o=St(arguments))[0],r=o[1],e=o[2],n=(a=ht(i,r,e))[0],t=a[1],e=a[2],V(n,t,e)},w.lch=function(){var t;return t=St(arguments),new n(t,"lch")},w.hcl=function(){var t;return t=St(arguments),new n(t,"hcl")},p.lch=X,p.hcl=function(){var t,e,r,n;return e=(n=St(arguments))[0],t=n[1],r=n[2],X([r,t,e])},n.prototype.lch=function(){return ft(this._rgb)},n.prototype.hcl=function(){return ft(this._rgb).reverse()},it=function(t){var e,r,n,i,o,a;return null==t&&(t="rgb"),o=(a=St(arguments))[0],n=a[1],e=a[2],n/=255,e/=255,[(1-(o/=255)-(i=1-Math.max(o,Math.max(n,e))))*(r=i<1?1/(1-i):0),(1-n-i)*r,(1-e-i)*r,i]},O=function(){var t,e,r,n,i,o;return r=(e=St(arguments))[0],i=e[1],o=e[2],n=e[3],t=e.length>4?e[4]:1,1===n?[0,0,0,t]:[r>=1?0:255*(1-r)*(1-n),i>=1?0:255*(1-i)*(1-n),o>=1?0:255*(1-o)*(1-n),t]},p.cmyk=function(){return O(St(arguments))},w.cmyk=function(){return function(t,e,r){r.prototype=t.prototype;var n=new r,i=t.apply(n,e);return Object(i)===i?i:n}(n,Pt.call(arguments).concat(["cmyk"]),(function(){}))},n.prototype.cmyk=function(){return it(this._rgb)},p.gl=function(){var t,e,r,n,i;for(n=function(){var t,r;for(e in r=[],t=St(arguments))i=t[e],r.push(i);return r}.apply(this,arguments),t=r=0;r<=2;t=++r)n[t]*=255;return n},w.gl=function(){return function(t,e,r){r.prototype=t.prototype;var n=new r,i=t.apply(n,e);return Object(i)===i?i:n}(n,Pt.call(arguments).concat(["gl"]),(function(){}))},n.prototype.gl=function(){var t;return[(t=this._rgb)[0]/255,t[1]/255,t[2]/255,t[3]]},pt=function(t,e,r){var n;return t=(n=St(arguments))[0],e=n[1],r=n[2],.2126*(t=J(t))+.7152*(e=J(e))+.0722*(r=J(r))},J=function(t){return(t/=255)<=.03928?t/12.92:nt((t+.055)/1.055,2.4)},z=function(t,e,r,i){var o,a;return o=t._rgb,a=e._rgb,new n(o[0]+r*(a[0]-o[0]),o[1]+r*(a[1]-o[1]),o[2]+r*(a[2]-o[2]),i)},d.push(["rgb",z]),n.prototype.luminance=function(t,e){var r,n,i,o,a;return null==e&&(e="rgb"),arguments.length?(o=this._rgb,0===t?o=[0,0,0,this._rgb[3]]:1===t?o=[255,255,255,this[3]]:(r=pt(this._rgb),n=1e-7,i=20,a=function(r,o){var s,l;return s=(l=r.interpolate(o,.5,e)).luminance(),Math.abs(t-s)t?a(r,l):a(l,o)},o=r>t?a(w("black"),this).rgba():a(this,w("white")).rgba()),w(o).alpha(this.alpha())):pt(this._rgb)},Et=function(t){var e,r,n,i;return(i=t/100)<66?(n=255,r=-155.25485562709179-.44596950469579133*(r=i-2)+104.49216199393888*K(r),e=i<20?0:.8274096064007395*(e=i-10)-254.76935184120902+115.67994401066147*K(e)):(n=351.97690566805693+.114206453784165*(n=i-55)-40.25366309332127*K(n),r=325.4494125711974+.07943456536662342*(r=i-50)-28.0852963507957*K(r),e=255),[n,r,e]},gt=function(){var t,e,r,n,i,o,a,s;for(i=(o=St(arguments))[0],o[1],t=o[2],n=1e3,r=4e4,e=.4;r-n>e;)(a=Et(s=.5*(r+n)))[2]/a[0]>=t/i?r=s:n=s;return vt(s)},w.temperature=w.kelvin=function(){return function(t,e,r){r.prototype=t.prototype;var n=new r,i=t.apply(n,e);return Object(i)===i?i:n}(n,Pt.call(arguments).concat(["temperature"]),(function(){}))},p.temperature=p.kelvin=p.K=Et,n.prototype.temperature=function(){return gt(this._rgb)},n.prototype.kelvin=n.prototype.temperature,w.contrast=function(t,e){var r,i,o,a;return"string"!==(o=Ot(t))&&"number"!==o||(t=new n(t)),"string"!==(a=Ot(e))&&"number"!==a||(e=new n(e)),(r=t.luminance())>(i=e.luminance())?(r+.05)/(i+.05):(i+.05)/(r+.05)},w.distance=function(t,e,r){var i,o,a,s,l,u,c;for(o in null==r&&(r="lab"),"string"!==(l=Ot(t))&&"number"!==l||(t=new n(t)),"string"!==(u=Ot(e))&&"number"!==u||(e=new n(e)),a=t.get(r),s=e.get(r),c=0,a)c+=(i=(a[o]||0)-(s[o]||0))*i;return Math.sqrt(c)},w.deltaE=function(t,e,r,i){var o,s,l,u,c,h,f,p,d,m,_,v,b,x,w,E,O,I,C,T,P,R,L,M;for(null==r&&(r=1),null==i&&(i=1),"string"!==(w=Ot(t))&&"number"!==w||(t=new n(t)),"string"!==(E=Ot(e))&&"number"!==E||(e=new n(e)),o=(O=t.lab())[0],l=O[1],c=O[2],s=(I=e.lab())[0],u=I[1],h=I[2],f=wt(l*l+c*c),p=wt(u*u+h*h),T=o<16?.511:.040975*o/(1+.01765*o),C=.0638*f/(1+.0131*f)+.638,x=f<1e-6?0:180*y(c,l)/a;x<0;)x+=360;for(;x>=360;)x-=360;return P=x>=164&&x<=345?.56+g(.2*S(a*(x+168)/180)):.36+g(.4*S(a*(x+35)/180)),b=wt((d=f*f*f*f)/(d+1900)),wt((R=(o-s)/(r*T))*R+(L=(v=f-p)/(i*C))*L+((m=l-u)*m+(_=c-h)*_-v*v)/((M=C*(b*P+1-b))*M))},n.prototype.get=function(t){var e,r,n,i,o;return this,n=(i=t.split("."))[0],e=i[1],o=this[n](),e?(r=n.indexOf(e))>-1?o[r]:console.warn("unknown channel "+e+" in mode "+n):o},n.prototype.set=function(t,e){var r,n,i,o,a;if(this,i=(o=t.split("."))[0],r=o[1])if(a=this[i](),(n=i.indexOf(r))>-1)if("string"===Ot(e))switch(e.charAt(0)){case"+":case"-":a[n]+=+e;break;case"*":a[n]*=+e.substr(1);break;case"/":a[n]/=+e.substr(1);break;default:a[n]=+e}else a[n]=e;else console.warn("unknown channel "+r+" in mode "+i);else a=e;return w(a,i).alpha(this.alpha())},n.prototype.clipped=function(){return this._rgb._clipped||!1},n.prototype.alpha=function(t){return arguments.length?w.rgb([this._rgb[0],this._rgb[1],this._rgb[2],t]):this._rgb[3]},n.prototype.darken=function(t){var e;return null==t&&(t=1),this,(e=this.lab())[0]-=o.Kn*t,w.lab(e).alpha(this.alpha())},n.prototype.brighten=function(t){return null==t&&(t=1),this.darken(-t)},n.prototype.darker=n.prototype.darken,n.prototype.brighter=n.prototype.brighten,n.prototype.saturate=function(t){var e;return null==t&&(t=1),this,(e=this.lch())[1]+=t*o.Kn,e[1]<0&&(e[1]=0),w.lch(e).alpha(this.alpha())},n.prototype.desaturate=function(t){return null==t&&(t=1),this.saturate(-t)},n.prototype.premultiply=function(){var t,e;return e=this.rgb(),t=this.alpha(),w(e[0]*t,e[1]*t,e[2]*t,t)},tt=function(t,e){return t*e/255},C=function(t,e){return t>e?e:t},H=function(t,e){return t>e?t:e},bt=function(t,e){return 255*(1-(1-t/255)*(1-e/255))},rt=function(t,e){return e<128?2*t*e/255:255*(1-2*(1-t/255)*(1-e/255))},x=function(t,e){return 255*(1-(1-e/255)/(t/255))},T=function(t,e){return 255===t||(t=e/255*255/(1-t/255))>255?255:t},(_=function(t,e,r){if(!_[r])throw"unknown blend mode "+r;return _[r](t,e)}).normal=(v=function(t){return function(e,r){var n,i;return n=w(r).rgb(),i=w(e).rgb(),w(t(n,i),"rgb")}})((P=function(t){return function(e,r){var n,i,o;for(o=[],n=i=0;i<=3;n=++i)o[n]=t(e[n],r[n]);return o}})((function(t,e){return t}))),_.multiply=v(P(tt)),_.screen=v(P(bt)),_.overlay=v(P(rt)),_.darken=v(P(C)),_.lighten=v(P(H)),_.dodge=v(P(T)),_.burn=v(P(x)),w.blend=_,w.analyze=function(t){var e,r,n,i;for(n={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0},r=0,e=t.length;rn.max&&(n.max=i),n.count+=1);return n.domain=[n.min,n.max],n.limits=function(t,e){return w.limits(n,t,e)},n},w.scale=function(t,e){var r,n,i,o,a,s,l,u,c,h,f,p,d,g,y,m,_,v,b,x,E;return c="rgb",h=w("#ccc"),g=0,!1,a=[0,1],d=[],p=[0,0],r=!1,i=[],f=!1,u=0,l=1,o=!1,n={},y=!0,s=1,x=function(t){var e,r,n,o,a,s;if(null==t&&(t=["#fff","#000"]),null!=t&&"string"===Ot(t)&&null!=w.brewer&&(t=w.brewer[t]||w.brewer[t.toLowerCase()]||t),"array"===Ot(t)){for(1===t.length&&(t=[t[0],t[0]]),e=n=0,o=(t=t.slice(0)).length-1;0<=o?n<=o:n>=o;e=0<=o?++n:--n)r=t[e],"string"===Ot(r)&&(t[e]=w(r));for(d.length=0,e=s=0,a=t.length-1;0<=a?s<=a:s>=a;e=0<=a?++s:--s)d.push(e/(t.length-1))}return b(),i=t},_=function(t){var e,n;if(null!=r){for(n=r.length-1,e=0;e=r[e];)e++;return e-1}return 0},E=function(t){return t},function(t){var e,n,i,o,a;return a=t,r.length>2&&(o=r.length-1,e=_(t),i=r[0]+(r[1]-r[0])*(0+.5*g),n=r[o-1]+(r[o]-r[o-1])*(1-.5*g),a=u+(r[e]+.5*(r[e+1]-r[e])-i)/(n-i)*(l-u)),a},v=function(t,e){var o,a,f,g,m,v,b;if(null==e&&(e=!1),isNaN(t))return h;if(b=e?t:r&&r.length>2?_(t)/(r.length-2):l!==u?(t-u)/(l-u):1,e||(b=E(b)),1!==s&&(b=nt(b,s)),b=p[0]+b*(1-p[0]-p[1]),b=Math.min(1,Math.max(0,b)),f=Math.floor(1e4*b),y&&n[f])o=n[f];else{if("array"===Ot(i))for(a=g=0,v=d.length-1;0<=v?g<=v:g>=v;a=0<=v?++g:--g){if(b<=(m=d[a])){o=i[a];break}if(b>=m&&a===d.length-1){o=i[a];break}if(b>m&&b=c;e=0<=c?++h:--h)d.push(e/(n-1));return a=[u,l],m},m.mode=function(t){return arguments.length?(c=t,b(),m):c},m.range=function(t,e){return x(t),m},m.out=function(t){return f=t,m},m.spread=function(t){return arguments.length?(g=t,m):g},m.correctLightness=function(t){return null==t&&(t=!0),o=t,b(),E=o?function(t){var e,r,n,i,o,a,s,l,u;for(e=v(0,!0).lab()[0],r=v(1,!0).lab()[0],s=e>r,n=v(t,!0).lab()[0],i=n-(o=e+(r-e)*t),l=0,u=1,a=20;Math.abs(i)>.01&&a-- >0;)s&&(i*=-1),i<0?(l=t,t+=.5*(u-t)):(u=t,t+=.5*(l-t)),n=v(t,!0).lab()[0],i=n-o;return t}:function(t){return t},m},m.padding=function(t){return null!=t?("number"===Ot(t)&&(t=[t,t]),p=t,m):p},m.colors=function(e,n){var o,s,l,u,c,h,f,p;if(arguments.length<2&&(n="hex"),c=[],0===arguments.length)c=i.slice(0);else if(1===e)c=[m(.5)];else if(e>1)s=a[0],o=a[1]-s,c=function(){h=[];for(var t=0;0<=e?te;0<=e?t++:t--)h.push(t);return h}.apply(this).map((function(t){return m(s+t/(e-1)*o)}));else{if(t=[],f=[],r&&r.length>2)for(l=p=1,u=r.length;1<=u?pu;l=1<=u?++p:--p)f.push(.5*(r[l-1]+r[l]));else f=a;c=f.map((function(t){return m(t)}))}return w[n]&&(c=c.map((function(t){return t[n]()}))),c},m.cache=function(t){return null!=t?(y=t,m):y},m.gamma=function(t){return null!=t?(s=t,m):s},m},null==w.scales&&(w.scales={}),w.scales.cool=function(){return w.scale([w.hsl(180,1,.9),w.hsl(250,.7,.4)])},w.scales.hot=function(){return w.scale(["#000","#f00","#ff0","#fff"],[0,.25,.75,1]).mode("rgb")},w.analyze=function(t,e,r){var n,i,o,a,s,l;if(s={min:Number.MAX_VALUE,max:-1*Number.MAX_VALUE,sum:0,values:[],count:0},null==r&&(r=function(){return!0}),n=function(t){null==t||isNaN(t)||(s.values.push(t),s.sum+=t,ts.max&&(s.max=t),s.count+=1)},l=function(t,i){if(r(t,i))return null!=e&&"function"===Ot(e)?n(e(t)):null!=e&&"string"===Ot(e)||"number"===Ot(e)?n(t[e]):n(t)},"array"===Ot(t))for(a=0,o=t.length;a=U;O=1<=U?++j:--j)C.push(P+O/r*(Q-P));C.push(Q)}else if("l"===e.substr(0,1)){if(P<=0)throw"Logarithmic scales are only possible for values > 0";for(L=Math.LOG10E*K(P),T=Math.LOG10E*K(Q),C.push(P),O=ut=1,B=r-1;1<=B?ut<=B:ut>=B;O=1<=B?++ut:--ut)C.push(nt(10,L+O/r*(T-L)));C.push(Q)}else if("q"===e.substr(0,1)){for(C.push(P),O=n=1,X=r-1;1<=X?n<=X:n>=X;O=1<=X?++n:--n)F=(lt.length-1)*O/r,(D=R(F))===F?C.push(lt[D]):(G=F-D,C.push(lt[D]*(1-G)+lt[D+1]*G));C.push(Q)}else if("k"===e.substr(0,1)){for(N=lt.length,m=new Array(N),x=new Array(r),it=!0,A=0,v=null,(v=[]).push(P),O=i=1,H=r-1;1<=H?i<=H:i>=H;O=1<=H?++i:--i)v.push(P+O/r*(Q-P));for(v.push(Q);it;){for(S=o=0,Z=r-1;0<=Z?o<=Z:o>=Z;S=0<=Z?++o:--o)x[S]=0;for(O=a=0,J=N-1;0<=J?a<=J:a>=J;O=0<=J?++a:--a){for(st=lt[O],M=Number.MAX_VALUE,S=s=0,$=r-1;0<=$?s<=$:s>=$;S=0<=$?++s:--s)(E=g(v[S]-st))=tt;S=0<=tt?++l:--l)k[S]=null;for(O=u=0,et=N-1;0<=et?u<=et:u>=et;O=0<=et?++u:--u)null===k[b=m[O]]?k[b]=lt[O]:k[b]+=lt[O];for(S=c=0,rt=r-1;0<=rt?c<=rt:c>=rt;S=0<=rt?++c:--c)k[S]*=1/x[S];for(it=!1,S=h=0,z=r-1;0<=z?h<=z:h>=z;S=0<=z?++h:--h)if(k[S]!==v[O]){it=!0;break}v=k,++A>200&&(it=!1)}for(I={},S=f=0,V=r-1;0<=V?f<=V:f>=V;S=0<=V?++f:--f)I[S]=[];for(O=p=0,q=N-1;0<=q?p<=q:p>=q;O=0<=q?++p:--p)I[b=m[O]].push(lt[O]);for(ot=[],S=d=0,Y=r-1;0<=Y?d<=Y:d>=Y;S=0<=Y?++d:--d)ot.push(I[S][0]),ot.push(I[S][I[S].length-1]);for(ot=ot.sort((function(t,e){return t-e})),C.push(ot[0]),O=y=1,W=ot.length-1;y<=W;O=y+=2)at=ot[O],isNaN(at)||-1!==C.indexOf(at)||C.push(at)}return C},N=function(t,e,r){var n,i,o,a;return t=(n=St(arguments))[0],e=n[1],r=n[2],isNaN(t)&&(t=0),(t/=360)<1/3?o=1-((i=(1-e)/3)+(a=(1+e*S(u*t)/S(s-u*t))/3)):t<2/3?i=1-((a=(1-e)/3)+(o=(1+e*S(u*(t-=1/3))/S(s-u*t))/3)):a=1-((o=(1-e)/3)+(i=(1+e*S(u*(t-=2/3))/S(s-u*t))/3)),[255*(a=Z(r*a*3)),255*(o=Z(r*o*3)),255*(i=Z(r*i*3)),n.length>3?n[3]:1]},lt=function(){var t,e,r,n,i,o,a;return i=(o=St(arguments))[0],e=o[1],t=o[2],u=2*Math.PI,i/=255,e/=255,t/=255,0===(a=1-Math.min(i,e,t)/(n=(i+e+t)/3))?r=0:(r=(i-e+(i-t))/2,r/=Math.sqrt((i-e)*(i-e)+(i-t)*(e-t)),r=Math.acos(r),t>e&&(r=u-r),r/=u),[360*r,a,n]},w.hsi=function(){return function(t,e,r){r.prototype=t.prototype;var n=new r,i=t.apply(n,e);return Object(i)===i?i:n}(n,Pt.call(arguments).concat(["hsi"]),(function(){}))},p.hsi=N,n.prototype.hsi=function(){return lt(this._rgb)},D=function(t,e,r,n){var i,o,a,s,l,u,c,h,f,p;return"hsl"===n?(f=t.hsl(),p=e.hsl()):"hsv"===n?(f=t.hsv(),p=e.hsv()):"hcg"===n?(f=t.hcg(),p=e.hcg()):"hsi"===n?(f=t.hsi(),p=e.hsi()):"lch"!==n&&"hcl"!==n||(n="hcl",f=t.hcl(),p=e.hcl()),"h"===n.substr(0,1)&&(o=f[0],c=f[1],s=f[2],a=p[0],h=p[1],l=p[2]),isNaN(o)||isNaN(a)?isNaN(o)?isNaN(a)?i=Number.NaN:(i=a,1!==s&&0!==s||"hsv"===n||(u=h)):(i=o,1!==l&&0!==l||"hsv"===n||(u=c)):i=o+r*(a>o&&a-o>180?a-(o+360):a180?a+360-o:a-o),null==u&&(u=c+r*(h-c)),w[n](i,u,s+r*(l-s))},B=function(t,e,r,n){var i,o;return i=t.num(),o=e.num(),w.num(i+(o-i)*r,"num")},(d=d.concat(function(){var t,e,r,n;for(n=[],e=0,t=(r=["hsv","hsl","hsi","hcl","lch","hcg"]).length;e=this.minZoom;){if(2===this.zoomFactor_?(a=Math.floor(a/2),s=Math.floor(s/2),o=Object(n.a)(a,a,s,s,r)):o=this.getTileRangeForExtentAndZ(l,u,r),e(u,o))return!0;--u}return!1},t.prototype.getExtent=function(){return this.extent_},t.prototype.getMaxZoom=function(){return this.maxZoom},t.prototype.getMinZoom=function(){return this.minZoom},t.prototype.getOrigin=function(t){return this.origin_?this.origin_:this.origins_[t]},t.prototype.getResolution=function(t){return this.resolutions_[t]},t.prototype.getResolutions=function(){return this.resolutions_},t.prototype.getTileCoordChildTileRange=function(t,e,r){if(t[0]this.maxZoom||et.maxResolution)return!1;var n=e.zoom;return n>t.minZoom&&n<=t.maxZoom}e.a=p},function(t,e,r){"use strict";r.d(e,"b",(function(){return n})),r.d(e,"a",(function(){return i}));var n=.5,i=!0},function(t,e,r){"use strict";var n=r(18),i=function(){function t(t){this.code_=t.code,this.units_=t.units,this.extent_=void 0!==t.extent?t.extent:null,this.worldExtent_=void 0!==t.worldExtent?t.worldExtent:null,this.axisOrientation_=void 0!==t.axisOrientation?t.axisOrientation:"enu",this.global_=void 0!==t.global&&t.global,this.canWrapX_=!(!this.global_||!this.extent_),this.getPointResolutionFunc_=t.getPointResolution,this.defaultTileGrid_=null,this.metersPerUnit_=t.metersPerUnit}return t.prototype.canWrapX=function(){return this.canWrapX_},t.prototype.getCode=function(){return this.code_},t.prototype.getExtent=function(){return this.extent_},t.prototype.getUnits=function(){return this.units_},t.prototype.getMetersPerUnit=function(){return this.metersPerUnit_||n.a[this.units_]},t.prototype.getWorldExtent=function(){return this.worldExtent_},t.prototype.getAxisOrientation=function(){return this.axisOrientation_},t.prototype.isGlobal=function(){return this.global_},t.prototype.setGlobal=function(t){this.global_=t,this.canWrapX_=!(!t||!this.extent_)},t.prototype.getDefaultTileGrid=function(){return this.defaultTileGrid_},t.prototype.setDefaultTileGrid=function(t){this.defaultTileGrid_=t},t.prototype.setExtent=function(t){this.extent_=t,this.canWrapX_=!(!this.global_||!t)},t.prototype.setWorldExtent=function(t){this.worldExtent_=t},t.prototype.setGetPointResolution=function(t){this.getPointResolutionFunc_=t},t.prototype.getPointResolutionFunc=function(){return this.getPointResolutionFunc_},t}();e.a=i},function(t,e,r){"use strict";function n(t,e){let r=t.length-e,n=0;do{for(let r=e;r>0;r--)t[n+e]+=t[n],n++;r-=e}while(r>0)}function i(t,e,r){let n=0,i=t.length;const o=i/r;for(;i>e;){for(let r=e;r>0;--r)t[n+e]+=t[n],++n;i-=e}const a=t.slice();for(let e=0;e=t.byteLength);++s){let o;if(2===e){switch(a[0]){case 8:o=new Uint8Array(t,s*u*r*l,u*r*l);break;case 16:o=new Uint16Array(t,s*u*r*l,u*r*l/2);break;case 32:o=new Uint32Array(t,s*u*r*l,u*r*l/4);break;default:throw new Error(`Predictor 2 not allowed with ${a[0]} bits per sample.`)}n(o,u)}else 3===e&&(o=new Uint8Array(t,s*u*r*l,u*r*l),i(o,u,l))}return t}(r,o,e?t.TileWidth:t.ImageWidth,e?t.TileLength:t.RowsPerStrip||t.ImageLength,t.BitsPerSample,t.PlanarConfiguration)}return r}}},function(t,e,r){"use strict";var n,i=r(54),o=r(21),a=r(17),s=r(5),l=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),u=function(t){function e(e){var r=t.call(this)||this;return r.eventTarget_=e,r.pendingRemovals_=null,r.dispatching_=null,r.listeners_=null,r}return l(e,t),e.prototype.addEventListener=function(t,e){if(t&&e){var r=this.listeners_||(this.listeners_={}),n=r[t]||(r[t]=[]);-1===n.indexOf(e)&&n.push(e)}},e.prototype.dispatchEvent=function(t){var e="string"==typeof t,r=e?t:t.type,n=this.listeners_&&this.listeners_[r];if(n){var i=e?new o.a(t):t;i.target||(i.target=this.eventTarget_||this);var s,l=this.dispatching_||(this.dispatching_={}),u=this.pendingRemovals_||(this.pendingRemovals_={});r in l||(l[r]=0,u[r]=0),++l[r];for(var c=0,h=n.length;c0)},e.prototype.removeEventListener=function(t,e){var r=this.listeners_&&this.listeners_[t];if(r){var n=r.indexOf(e);-1!==n&&(this.pendingRemovals_&&t in this.pendingRemovals_?(r[n]=a.c,++this.pendingRemovals_[t]):(r.splice(n,1),0===r.length&&delete this.listeners_[t]))}},e}(i.a);e.a=u},function(t,e,r){"use strict";r.d(e,"a",(function(){return y}));var n,i=r(21),o=r(46),a=r(70),s=r(9),l=r(3),u=r(11),c=r(1),h=r(22),f=r(29),p=r(16),d=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),g=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,projection:e.projection,state:e.state,wrapX:e.wrapX,interpolate:e.interpolate})||this;r.on,r.once,r.un,r.opaque_=void 0!==e.opaque&&e.opaque,r.tilePixelRatio_=void 0!==e.tilePixelRatio?e.tilePixelRatio:1,r.tileGrid=void 0!==e.tileGrid?e.tileGrid:null;return r.tileGrid&&Object(p.d)(r.tileGrid.getTileSize(r.tileGrid.getMinZoom()),[256,256]),r.tileCache=new a.a(e.cacheSize||0),r.tmpSize=[0,0],r.key_=e.key||"",r.tileOptions={transition:e.transition,interpolate:e.interpolate},r.zDirection=e.zDirection?e.zDirection:0,r}return d(e,t),e.prototype.canExpireCache=function(){return this.tileCache.canExpireCache()},e.prototype.expireCache=function(t,e){var r=this.getTileCacheForProjection(t);r&&r.expireCache(e)},e.prototype.forEachLoadedTile=function(t,e,r,n){var i=this.getTileCacheForProjection(t);if(!i)return!1;for(var o,a,l,u=!0,c=r.minX;c<=r.maxX;++c)for(var f=r.minY;f<=r.maxY;++f)a=Object(h.e)(e,c,f),l=!1,i.containsKey(a)&&(l=(o=i.get(a)).getState()===s.a.LOADED)&&(l=!1!==n(o)),l||(u=!1);return u},e.prototype.getGutterForProjection=function(t){return 0},e.prototype.getKey=function(){return this.key_},e.prototype.setKey=function(t){this.key_!==t&&(this.key_=t,this.changed())},e.prototype.getOpaque=function(t){return this.opaque_},e.prototype.getResolutions=function(){return this.tileGrid?this.tileGrid.getResolutions():null},e.prototype.getTile=function(t,e,r,n,i){return Object(l.b)()},e.prototype.getTileGrid=function(){return this.tileGrid},e.prototype.getTileGridForProjection=function(t){return this.tileGrid?this.tileGrid:Object(f.d)(t)},e.prototype.getTileCacheForProjection=function(t){return Object(u.a)(Object(c.j)(this.getProjection(),t),68),this.tileCache},e.prototype.getTilePixelRatio=function(t){return this.tilePixelRatio_},e.prototype.getTilePixelSize=function(t,e,r){var n=this.getTileGridForProjection(r),i=this.getTilePixelRatio(e),o=Object(p.d)(n.getTileSize(t),this.tmpSize);return 1==i?o:Object(p.c)(o,i,this.tmpSize)},e.prototype.getTileCoordForTileUrlFunction=function(t,e){var r=void 0!==e?e:this.getProjection(),n=this.getTileGridForProjection(r);return this.getWrapX()&&r.isGlobal()&&(t=Object(f.e)(n,t,r)),Object(h.g)(t,n)?t:null},e.prototype.clear=function(){this.tileCache.clear()},e.prototype.refresh=function(){this.clear(),t.prototype.refresh.call(this)},e.prototype.updateCacheSize=function(t,e){var r=this.getTileCacheForProjection(e);t>r.highWaterMark&&(r.highWaterMark=t)},e.prototype.useTile=function(t,e,r,n){},e}(o.a),y=function(t){function e(e,r){var n=t.call(this,e)||this;return n.tile=r,n}return d(e,t),e}(i.a);e.b=g},function(t,e,r){"use strict";r.d(e,"b",(function(){return f}));var n,i=r(7),o=r(69),a=r(14),s=r(27),l=r(0),u=r(8),c=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),h=function(t){function e(e,r,n,i,o,s){var l=t.call(this,e,r,n,a.a.IDLE)||this;return l.src_=i,l.image_=new Image,null!==o&&(l.image_.crossOrigin=o),l.unlisten_=null,l.state=a.a.IDLE,l.imageLoadFunction_=s,l}return c(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.handleImageError_=function(){this.state=a.a.ERROR,this.unlistenImage_(),this.changed()},e.prototype.handleImageLoad_=function(){void 0===this.resolution&&(this.resolution=Object(l.A)(this.extent)/this.image_.height),this.state=a.a.LOADED,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state!=a.a.IDLE&&this.state!=a.a.ERROR||(this.state=a.a.LOADING,this.changed(),this.imageLoadFunction_(this,this.src_),this.unlisten_=f(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.setImage=function(t){this.image_=t,this.resolution=Object(l.A)(this.extent)/this.image_.height},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(o.a);function f(t,e,r){var n=t,o=!0,a=!1,l=!1,c=[Object(u.b)(n,i.a.LOAD,(function(){l=!0,a||e()}))];return n.src&&s.c?(a=!0,n.decode().then((function(){o&&e()})).catch((function(t){o&&(l?e():r())}))):c.push(Object(u.b)(n,i.a.ERROR,r)),function(){o=!1,c.forEach(u.c)}}e.a=h},function(t,e,r){"use strict";var n,i=r(42),o=r(7),a=r(9),s=r(3),l=r(28),u=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),c=function(t){function e(e,r,n){var i=t.call(this)||this,o=n||{};return i.tileCoord=e,i.state=r,i.interimTile=null,i.key="",i.transition_=void 0===o.transition?250:o.transition,i.transitionStarts_={},i.interpolate=!!o.interpolate,i}return u(e,t),e.prototype.changed=function(){this.dispatchEvent(o.a.CHANGE)},e.prototype.release=function(){},e.prototype.getKey=function(){return this.key+"/"+this.tileCoord},e.prototype.getInterimTile=function(){if(!this.interimTile)return this;var t=this.interimTile;do{if(t.getState()==a.a.LOADED)return this.transition_=0,t;t=t.interimTile}while(t);return this},e.prototype.refreshInterimChain=function(){if(this.interimTile){var t=this.interimTile,e=this;do{if(t.getState()==a.a.LOADED){t.interimTile=null;break}t.getState()==a.a.LOADING?e=t:t.getState()==a.a.IDLE?e.interimTile=t.interimTile:e=t,t=e.interimTile}while(t)}},e.prototype.getTileCoord=function(){return this.tileCoord},e.prototype.getState=function(){return this.state},e.prototype.setState=function(t){if(this.state!==a.a.ERROR&&this.state>t)throw new Error("Tile load sequence violation");this.state=t,this.changed()},e.prototype.load=function(){Object(s.b)()},e.prototype.getAlpha=function(t,e){if(!this.transition_)return 1;var r=this.transitionStarts_[t];if(r){if(-1===r)return 1}else r=e,this.transitionStarts_[t]=r;var n=e-r+1e3/60;return n>=this.transition_?1:Object(l.easeIn)(n/this.transition_)},e.prototype.inTransition=function(t){return!!this.transition_&&-1!==this.transitionStarts_[t]},e.prototype.endTransition=function(t){this.transition_&&(this.transitionStarts_[t]=-1)},e}(i.a);e.a=c},function(t,e,r){"use strict";var n,i=r(30),o=r(19),a=r(3),s=r(1),l=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),u=function(t){function e(e){var r=t.call(this)||this;r.projection=Object(s.o)(e.projection),r.attributions_=c(e.attributions),r.attributionsCollapsible_=void 0===e.attributionsCollapsible||e.attributionsCollapsible,r.loading=!1,r.state_=void 0!==e.state?e.state:o.a.READY,r.wrapX_=void 0!==e.wrapX&&e.wrapX,r.interpolate_=!!e.interpolate,r.viewResolver=null,r.viewRejector=null;var n=r;return r.viewPromise_=new Promise((function(t,e){n.viewResolver=t,n.viewRejector=e})),r}return l(e,t),e.prototype.getAttributions=function(){return this.attributions_},e.prototype.getAttributionsCollapsible=function(){return this.attributionsCollapsible_},e.prototype.getProjection=function(){return this.projection},e.prototype.getResolutions=function(){return Object(a.b)()},e.prototype.getView=function(){return this.viewPromise_},e.prototype.getState=function(){return this.state_},e.prototype.getWrapX=function(){return this.wrapX_},e.prototype.getInterpolate=function(){return this.interpolate_},e.prototype.refresh=function(){this.changed()},e.prototype.setAttributions=function(t){this.attributions_=c(t),this.changed()},e.prototype.setState=function(t){this.state_=t,this.changed()},e}(i.a);function c(t){return t?Array.isArray(t)?function(e){return t}:"function"==typeof t?t:function(e){return[t]}:null}e.a=u},function(t,e,r){"use strict";e.a={PROPERTYCHANGE:"propertychange"}},function(t,e,r){"use strict";r.d(e,"a",(function(){return n})),r.d(e,"b",(function(){return i}));var n={imageSmoothingEnabled:!1,msImageSmoothingEnabled:!1},i={imageSmoothingEnabled:!0,msImageSmoothingEnabled:!0}},function(t,e,r){"use strict";function n(t,e,r){var n=void 0!==r?t.toFixed(r):""+t,i=n.indexOf(".");return(i=-1===i?n.length:i)>e?n:new Array(1+e-i).join("0")+n}function i(t,e){for(var r=(""+t).split("."),n=(""+e).split("."),i=0;ia)return 1;if(a>o)return-1}return 0}r.d(e,"b",(function(){return n})),r.d(e,"a",(function(){return i}))},function(t,e,r){"use strict";r.d(e,"a",(function(){return n})),r.d(e,"b",(function(){return i}));var n=42,i=256},function(t,e,r){"use strict";r.d(e,"a",(function(){return i}));var n=function(){function t(t,e,r,n){this.minX=t,this.maxX=e,this.minY=r,this.maxY=n}return t.prototype.contains=function(t){return this.containsXY(t[1],t[2])},t.prototype.containsTileRange=function(t){return this.minX<=t.minX&&t.maxX<=this.maxX&&this.minY<=t.minY&&t.maxY<=this.maxY},t.prototype.containsXY=function(t,e){return this.minX<=t&&t<=this.maxX&&this.minY<=e&&e<=this.maxY},t.prototype.equals=function(t){return this.minX==t.minX&&this.minY==t.minY&&this.maxX==t.maxX&&this.maxY==t.maxY},t.prototype.extend=function(t){t.minXthis.maxX&&(this.maxX=t.maxX),t.minYthis.maxY&&(this.maxY=t.maxY)},t.prototype.getHeight=function(){return this.maxY-this.minY+1},t.prototype.getSize=function(){return[this.getWidth(),this.getHeight()]},t.prototype.getWidth=function(){return this.maxX-this.minX+1},t.prototype.intersects=function(t){return this.minX<=t.maxX&&this.maxX>=t.minX&&this.minY<=t.maxY&&this.maxY>=t.minY},t}();function i(t,e,r,i,o){return void 0!==o?(o.minX=t,o.maxX=e,o.minY=r,o.maxY=i,o):new n(t,e,r,i)}e.b=n},function(t,e,r){"use strict";r.d(e,"b",(function(){return i})),r.d(e,"a",(function(){return o})),r.d(e,"c",(function(){return a}));r(5);var n={};function i(){n={}}function o(t,e,r){var i=t.getCode(),o=e.getCode();i in n||(n[i]={}),n[i][o]=r}function a(t,e){var r;return t in n&&e in n[t]&&(r=n[t][e]),r}},function(t,e,r){"use strict";(function(t,n){r.d(e,"a",(function(){return J})),r.d(e,"b",(function(){return Lr})),r.d(e,"c",(function(){return Mr})),r.d(e,"d",(function(){return mr})),r.d(e,"e",(function(){return Nr})),r.d(e,"f",(function(){return i}));var i={$version:8,$root:{version:{required:!0,type:"enum",values:[8],doc:"Style specification version number. Must be 8.",example:8},name:{type:"string",doc:"A human-readable name for the style.",example:"Bright"},metadata:{type:"*",doc:"Arbitrary properties useful to track with the stylesheet, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'."},center:{type:"array",value:"number",doc:"Default map center in longitude and latitude. The style center will be used only if the map has not been positioned by other means (e.g. map options or user interaction).",example:[-73.9749,40.7736]},zoom:{type:"number",doc:"Default zoom level. The style zoom will be used only if the map has not been positioned by other means (e.g. map options or user interaction).",example:12.5},bearing:{type:"number",default:0,period:360,units:"degrees",doc:'Default bearing, in degrees. The bearing is the compass direction that is "up"; for example, a bearing of 90° orients the map so that east is up. This value will be used only if the map has not been positioned by other means (e.g. map options or user interaction).',example:29},pitch:{type:"number",default:0,units:"degrees",doc:"Default pitch, in degrees. Zero is perpendicular to the surface, for a look straight down at the map, while a greater value like 60 looks ahead towards the horizon. The style pitch will be used only if the map has not been positioned by other means (e.g. map options or user interaction).",example:50},light:{type:"light",doc:"The global light source.",example:{anchor:"viewport",color:"white",intensity:.4}},terrain:{type:"terrain",doc:"A global modifier that elevates layers and markers based on a DEM data source."},fog:{type:"fog",doc:"A global effect that fades layers and markers based on their distance to the camera. The fog can be used to approximate the effect of atmosphere on distant objects and enhance the depth perception of the map when used with terrain or 3D features."},sources:{required:!0,type:"sources",doc:"Data source specifications.",example:{"mapbox-streets":{type:"vector",url:"mapbox://mapbox.mapbox-streets-v6"}}},sprite:{type:"string",doc:"A base URL for retrieving the sprite image and metadata. The extensions `.png`, `.json` and scale factor `@2x.png` will be automatically appended. This property is required if any layer uses the `background-pattern`, `fill-pattern`, `line-pattern`, `fill-extrusion-pattern`, or `icon-image` properties. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).",example:"mapbox://sprites/mapbox/bright-v8"},glyphs:{type:"string",doc:"A URL template for loading signed-distance-field glyph sets in PBF format. The URL must include `{fontstack}` and `{range}` tokens. This property is required if any layer uses the `text-field` layout property. The URL must be absolute, containing the [scheme, authority and path components](https://en.wikipedia.org/wiki/URL#Syntax).",example:"mapbox://fonts/mapbox/{fontstack}/{range}.pbf"},transition:{type:"transition",doc:"A global transition definition to use as a default across properties, to be used for timing transitions between one value and the next when no property-specific transition is set. Collision-based symbol fading is controlled independently of the style's `transition` property.",example:{duration:300,delay:0}},projection:{type:"projection",doc:"The projection the map should be rendered in. Supported projections are Albers, Equal Earth, Equirectangular (WGS84), Lambert conformal conic, Mercator, Natural Earth, and Winkel Tripel. Terrain, fog, sky and CustomLayerInterface are not supported for projections other than mercator.",example:{name:"albers",center:[-154,50],parallels:[55,65]}},layers:{required:!0,type:"array",value:"layer",doc:"Layers will be drawn in the order of this array.",example:[{id:"water",source:"mapbox-streets","source-layer":"water",type:"fill",paint:{"fill-color":"#00ffff"}}]}},sources:{"*":{type:"source",doc:"Specification of a data source. For vector and raster sources, either TileJSON or a URL to a TileJSON must be provided. For image and video sources, a URL must be provided. For GeoJSON sources, a URL or inline GeoJSON must be provided."}},source:["source_vector","source_raster","source_raster_dem","source_geojson","source_video","source_image"],source_vector:{type:{required:!0,type:"enum",values:{vector:{doc:"A vector tile source."}},doc:"The type of the source."},url:{type:"string",doc:"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`."},tiles:{type:"array",value:"string",doc:"An array of one or more tile source URLs, as in the TileJSON spec."},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129],doc:"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL."},scheme:{type:"enum",values:{xyz:{doc:"Slippy map tilenames scheme."},tms:{doc:"OSGeo spec scheme."}},default:"xyz",doc:"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed."},minzoom:{type:"number",default:0,doc:"Minimum zoom level for which tiles are available, as in the TileJSON spec."},maxzoom:{type:"number",default:22,doc:"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},promoteId:{type:"promoteId",doc:"A property to use as a feature id (for feature state). Either a property name, or an object of the form `{: }`. If specified as a string for a vector tile source, the same property is used across all its source layers."},volatile:{type:"boolean",default:!1,doc:"A setting to determine whether a source's tiles are cached locally.","sdk-support":{"basic functionality":{android:"9.3.0",ios:"5.10.0"}}},"*":{type:"*",doc:"Other keys to configure the data source."}},source_raster:{type:{required:!0,type:"enum",values:{raster:{doc:"A raster tile source."}},doc:"The type of the source."},url:{type:"string",doc:"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`."},tiles:{type:"array",value:"string",doc:"An array of one or more tile source URLs, as in the TileJSON spec."},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129],doc:"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL."},minzoom:{type:"number",default:0,doc:"Minimum zoom level for which tiles are available, as in the TileJSON spec."},maxzoom:{type:"number",default:22,doc:"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels."},tileSize:{type:"number",default:512,units:"pixels",doc:"The minimum visual size to display tiles for this layer. Only configurable for raster layers."},scheme:{type:"enum",values:{xyz:{doc:"Slippy map tilenames scheme."},tms:{doc:"OSGeo spec scheme."}},default:"xyz",doc:"Influences the y direction of the tile coordinates. The global-mercator (aka Spherical Mercator) profile is assumed."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},volatile:{type:"boolean",default:!1,doc:"A setting to determine whether a source's tiles are cached locally.","sdk-support":{"basic functionality":{android:"9.3.0",ios:"5.10.0"}}},"*":{type:"*",doc:"Other keys to configure the data source."}},source_raster_dem:{type:{required:!0,type:"enum",values:{"raster-dem":{doc:"A RGB-encoded raster DEM source"}},doc:"The type of the source."},url:{type:"string",doc:"A URL to a TileJSON resource. Supported protocols are `http:`, `https:`, and `mapbox://`."},tiles:{type:"array",value:"string",doc:"An array of one or more tile source URLs, as in the TileJSON spec."},bounds:{type:"array",value:"number",length:4,default:[-180,-85.051129,180,85.051129],doc:"An array containing the longitude and latitude of the southwest and northeast corners of the source's bounding box in the following order: `[sw.lng, sw.lat, ne.lng, ne.lat]`. When this property is included in a source, no tiles outside of the given bounds are requested by Mapbox GL."},minzoom:{type:"number",default:0,doc:"Minimum zoom level for which tiles are available, as in the TileJSON spec."},maxzoom:{type:"number",default:22,doc:"Maximum zoom level for which tiles are available, as in the TileJSON spec. Data from tiles at the maxzoom are used when displaying the map at higher zoom levels."},tileSize:{type:"number",default:512,units:"pixels",doc:"The minimum visual size to display tiles for this layer. Only configurable for raster layers."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},encoding:{type:"enum",values:{terrarium:{doc:"Terrarium format PNG tiles. See https://aws.amazon.com/es/public-datasets/terrain/ for more info."},mapbox:{doc:"Mapbox Terrain RGB tiles. See https://www.mapbox.com/help/access-elevation-data/#mapbox-terrain-rgb for more info."}},default:"mapbox",doc:"The encoding used by this source. Mapbox Terrain RGB is used by default"},volatile:{type:"boolean",default:!1,doc:"A setting to determine whether a source's tiles are cached locally.","sdk-support":{"basic functionality":{android:"9.3.0",ios:"5.10.0"}}},"*":{type:"*",doc:"Other keys to configure the data source."}},source_geojson:{type:{required:!0,type:"enum",values:{geojson:{doc:"A GeoJSON data source."}},doc:"The data type of the GeoJSON source."},data:{type:"*",doc:"A URL to a GeoJSON file, or inline GeoJSON."},maxzoom:{type:"number",default:18,doc:"Maximum zoom level at which to create vector tiles (higher means greater detail at high zoom levels)."},attribution:{type:"string",doc:"Contains an attribution to be displayed when the map is shown to a user."},buffer:{type:"number",default:128,maximum:512,minimum:0,doc:"Size of the tile buffer on each side. A value of 0 produces no buffer. A value of 512 produces a buffer as wide as the tile itself. Larger values produce fewer rendering artifacts near tile edges and slower performance."},filter:{type:"*",doc:"An expression for filtering features prior to processing them for rendering."},tolerance:{type:"number",default:.375,doc:"Douglas-Peucker simplification tolerance (higher means simpler geometries and faster performance)."},cluster:{type:"boolean",default:!1,doc:"If the data is a collection of point features, setting this to true clusters the points by radius into groups. Cluster groups become new `Point` features in the source with additional properties:\n * `cluster` Is `true` if the point is a cluster \n * `cluster_id` A unqiue id for the cluster to be used in conjunction with the [cluster inspection methods](https://www.mapbox.com/mapbox-gl-js/api/#geojsonsource#getclusterexpansionzoom)\n * `point_count` Number of original points grouped into this cluster\n * `point_count_abbreviated` An abbreviated point count"},clusterRadius:{type:"number",default:50,minimum:0,doc:"Radius of each cluster if clustering is enabled. A value of 512 indicates a radius equal to the width of a tile."},clusterMaxZoom:{type:"number",doc:"Max zoom on which to cluster points if clustering is enabled. Defaults to one zoom less than maxzoom (so that last zoom features are not clustered). Clusters are re-evaluated at integer zoom levels so setting clusterMaxZoom to 14 means the clusters will be displayed until z15."},clusterMinPoints:{type:"number",doc:"Minimum number of points necessary to form a cluster if clustering is enabled. Defaults to `2`."},clusterProperties:{type:"*",doc:'An object defining custom properties on the generated clusters if clustering is enabled, aggregating values from clustered points. Has the form `{"property_name": [operator, map_expression]}`. `operator` is any expression function that accepts at least 2 operands (e.g. `"+"` or `"max"`) — it accumulates the property value from clusters/points the cluster contains; `map_expression` produces the value of a single point.\n\nExample: `{"sum": ["+", ["get", "scalerank"]]}`.\n\nFor more advanced use cases, in place of `operator`, you can use a custom reduce expression that references a special `["accumulated"]` value, e.g.:\n`{"sum": [["+", ["accumulated"], ["get", "sum"]], ["get", "scalerank"]]}`'},lineMetrics:{type:"boolean",default:!1,doc:"Whether to calculate line distance metrics. This is required for line layers that specify `line-gradient` values."},generateId:{type:"boolean",default:!1,doc:"Whether to generate ids for the geojson features. When enabled, the `feature.id` property will be auto assigned based on its index in the `features` array, over-writing any previous values."},promoteId:{type:"promoteId",doc:"A property to use as a feature id (for feature state). Either a property name, or an object of the form `{: }`."}},source_video:{type:{required:!0,type:"enum",values:{video:{doc:"A video data source."}},doc:"The data type of the video source."},urls:{required:!0,type:"array",value:"string",doc:"URLs to video content in order of preferred format."},coordinates:{required:!0,doc:"Corners of video specified in longitude, latitude pairs.",type:"array",length:4,value:{type:"array",length:2,value:"number",doc:"A single longitude, latitude pair."}}},source_image:{type:{required:!0,type:"enum",values:{image:{doc:"An image data source."}},doc:"The data type of the image source."},url:{required:!0,type:"string",doc:"URL that points to an image."},coordinates:{required:!0,doc:"Corners of image specified in longitude, latitude pairs.",type:"array",length:4,value:{type:"array",length:2,value:"number",doc:"A single longitude, latitude pair."}}},layer:{id:{type:"string",doc:"Unique layer name.",required:!0},type:{type:"enum",values:{fill:{doc:"A filled polygon with an optional stroked border.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},line:{doc:"A stroked line.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},symbol:{doc:"An icon or a text label.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},circle:{doc:"A filled circle.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},heatmap:{doc:"A heatmap.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"fill-extrusion":{doc:"An extruded (3D) polygon.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},raster:{doc:"Raster map textures such as satellite imagery.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},hillshade:{doc:"Client-side hillshading visualization based on DEM data. Currently, the implementation only supports Mapbox Terrain RGB and Mapzen Terrarium tiles.","sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},background:{doc:"The background color or pattern of the map.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}}},sky:{doc:"A spherical dome around the map that is always rendered behind all other layers.","sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}}}},doc:"Rendering type of this layer.",required:!0},metadata:{type:"*",doc:"Arbitrary properties useful to track with the layer, but do not influence rendering. Properties should be prefixed to avoid collisions, like 'mapbox:'."},source:{type:"string",doc:"Name of a source description to be used for this layer. Required for all layer types except `background`."},"source-layer":{type:"string",doc:"Layer to use from a vector tile source. Required for vector tile sources; prohibited for all other source types, including GeoJSON sources."},minzoom:{type:"number",minimum:0,maximum:24,doc:"The minimum zoom level for the layer. At zoom levels less than the minzoom, the layer will be hidden."},maxzoom:{type:"number",minimum:0,maximum:24,doc:"The maximum zoom level for the layer. At zoom levels equal to or greater than the maxzoom, the layer will be hidden."},filter:{type:"filter",doc:'An expression specifying conditions on source features. Only features that match the filter are displayed. Zoom expressions in filters are only evaluated at integer zoom levels. The `["feature-state", ...]` expression is not supported in filter expressions. The `["pitch"]` and `["distance-from-center"]` expressions are supported only for filter expressions on the symbol layer.'},layout:{type:"layout",doc:"Layout properties for the layer."},paint:{type:"paint",doc:"Default paint properties for this layer."}},layout:["layout_fill","layout_line","layout_circle","layout_heatmap","layout_fill-extrusion","layout_symbol","layout_raster","layout_hillshade","layout_background","layout_sky"],layout_background:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_sky:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}},"property-type":"constant"}},layout_fill:{"fill-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.","sdk-support":{"basic functionality":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"},"data-driven styling":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_circle:{"circle-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.","sdk-support":{"basic functionality":{js:"1.2.0",android:"9.2.0",ios:"5.9.0",macos:"0.16.0"},"data-driven styling":{js:"1.2.0",android:"9.2.0",ios:"5.9.0",macos:"0.16.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_heatmap:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},"property-type":"constant"}},"layout_fill-extrusion":{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},"property-type":"constant"}},layout_line:{"line-cap":{type:"enum",values:{butt:{doc:"A cap with a squared-off end which is drawn to the exact endpoint of the line."},round:{doc:"A cap with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line."},square:{doc:"A cap with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width."}},default:"butt",doc:"The display of line endings.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"2.3.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-join":{type:"enum",values:{bevel:{doc:"A join with a squared-off end which is drawn beyond the endpoint of the line at a distance of one-half of the line's width."},round:{doc:"A join with a rounded end which is drawn beyond the endpoint of the line at a radius of one-half of the line's width and centered on the endpoint of the line."},miter:{doc:"A join with a sharp, angled corner which is drawn with the outer sides beyond the endpoint of the path until they meet."}},default:"miter",doc:"The display of lines when joining.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"line-miter-limit":{type:"number",default:2,doc:"Used to automatically convert miter joins to bevel joins for sharp angles.",requires:[{"line-join":"miter"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-round-limit":{type:"number",default:1.05,doc:"Used to automatically convert round joins to miter joins for shallow angles.",requires:[{"line-join":"round"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key.","sdk-support":{"basic functionality":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"},"data-driven styling":{js:"1.2.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_symbol:{"symbol-placement":{type:"enum",values:{point:{doc:"The label is placed at the point where the geometry is located."},line:{doc:"The label is placed along the line of the geometry. Can only be used on `LineString` and `Polygon` geometries."},"line-center":{doc:"The label is placed at the center of the line of the geometry. Can only be used on `LineString` and `Polygon` geometries. Note that a single feature in a vector tile may contain multiple line geometries."}},default:"point",doc:"Label placement relative to its geometry.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"`line-center` value":{js:"0.47.0",android:"6.4.0",ios:"4.3.0",macos:"0.10.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-spacing":{type:"number",default:250,minimum:1,units:"pixels",doc:"Distance between two symbol anchors.",requires:[{"symbol-placement":"line"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"symbol-avoid-edges":{type:"boolean",default:!1,doc:"If true, the symbols will not cross tile edges to avoid mutual collisions. Recommended in layers that don't have enough padding in the vector tile to prevent collisions, or if it is a point symbol layer placed after a line symbol layer. When using a client that supports global collision detection, like Mapbox GL JS version 0.42.0 or greater, enabling this property is not needed to prevent clipped labels at tile boundaries.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"symbol-sort-key":{type:"number",doc:"Sorts features in ascending order based on this value. Features with lower sort keys are drawn and placed first. When `icon-allow-overlap` or `text-allow-overlap` is `false`, features with a lower sort key will have priority during placement. When `icon-allow-overlap` or `text-allow-overlap` is set to `true`, features with a higher sort key will overlap over features with a lower sort key.","sdk-support":{"basic functionality":{js:"0.53.0",android:"7.4.0",ios:"4.11.0",macos:"0.14.0"},"data-driven styling":{js:"0.53.0",android:"7.4.0",ios:"4.11.0",macos:"0.14.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"symbol-z-order":{type:"enum",values:{auto:{doc:"Sorts symbols by `symbol-sort-key` if set. Otherwise, sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`."},"viewport-y":{doc:"Sorts symbols by their y-position relative to the viewport if `icon-allow-overlap` or `text-allow-overlap` is set to `true` or `icon-ignore-placement` or `text-ignore-placement` is `false`."},source:{doc:"Sorts symbols by `symbol-sort-key` if set. Otherwise, no sorting is applied; symbols are rendered in the same order as the source data."}},default:"auto",doc:"Determines whether overlapping symbols in the same layer are rendered in the order that they appear in the data source or by their y-position relative to the viewport. To control the order and prioritization of symbols otherwise, use `symbol-sort-key`.","sdk-support":{"basic functionality":{js:"0.49.0",android:"6.6.0",ios:"4.5.0",macos:"0.12.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-allow-overlap":{type:"boolean",default:!1,doc:"If true, the icon will be visible even if it collides with other previously drawn symbols.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-ignore-placement":{type:"boolean",default:!1,doc:"If true, other symbols can be visible even if they collide with the icon.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-optional":{type:"boolean",default:!1,doc:"If true, text will display without their corresponding icons when the icon collides with other symbols and the text does not.",requires:["icon-image","text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-rotation-alignment":{type:"enum",values:{map:{doc:"When `symbol-placement` is set to `point`, aligns icons east-west. When `symbol-placement` is set to `line` or `line-center`, aligns icon x-axes with the line."},viewport:{doc:"Produces icons whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`."},auto:{doc:"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`."}},default:"auto",doc:"In combination with `symbol-placement`, determines the rotation behavior of icons.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"`auto` value":{js:"0.25.0",android:"4.2.0",ios:"3.4.0",macos:"0.3.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-size":{type:"number",default:1,minimum:0,units:"factor of the original icon size",doc:"Scales the original size of the icon by the provided factor. The new pixel size of the image will be the original pixel size multiplied by `icon-size`. 1 is the original size; 3 triples the size of the image.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-text-fit":{type:"enum",values:{none:{doc:"The icon is displayed at its intrinsic aspect ratio."},width:{doc:"The icon is scaled in the x-dimension to fit the width of the text."},height:{doc:"The icon is scaled in the y-dimension to fit the height of the text."},both:{doc:"The icon is scaled in both x- and y-dimensions."}},default:"none",doc:"Scales the icon to fit around the associated text.",requires:["icon-image","text-field"],"sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"},"stretchable icons":{js:"1.6.0",android:"9.2.0",ios:"5.8.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-text-fit-padding":{type:"array",value:"number",length:4,default:[0,0,0,0],units:"pixels",doc:"Size of the additional area added to dimensions determined by `icon-text-fit`, in clockwise order: top, right, bottom, left.",requires:["icon-image","text-field",{"icon-text-fit":["both","width","height"]}],"sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-image":{type:"resolvedImage",doc:"Name of image in sprite to use for drawing an image background.",tokens:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-rotate":{type:"number",default:0,period:360,units:"degrees",doc:"Rotates the icon clockwise.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.21.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-padding":{type:"number",default:2,minimum:0,units:"pixels",doc:"Size of the additional area around the icon bounding box used for detecting symbol collisions.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-keep-upright":{type:"boolean",default:!1,doc:"If true, the icon may be flipped to prevent it from being rendered upside-down.",requires:["icon-image",{"icon-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"icon-offset":{type:"array",value:"number",length:2,default:[0,0],doc:"Offset distance of icon from its anchor. Positive values indicate right and down, while negative values indicate left and up. Each component is multiplied by the value of `icon-size` to obtain the final offset in pixels. When combined with `icon-rotate` the offset will be as if the rotated direction was up.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-anchor":{type:"enum",values:{center:{doc:"The center of the icon is placed closest to the anchor."},left:{doc:"The left side of the icon is placed closest to the anchor."},right:{doc:"The right side of the icon is placed closest to the anchor."},top:{doc:"The top of the icon is placed closest to the anchor."},bottom:{doc:"The bottom of the icon is placed closest to the anchor."},"top-left":{doc:"The top left corner of the icon is placed closest to the anchor."},"top-right":{doc:"The top right corner of the icon is placed closest to the anchor."},"bottom-left":{doc:"The bottom left corner of the icon is placed closest to the anchor."},"bottom-right":{doc:"The bottom right corner of the icon is placed closest to the anchor."}},default:"center",doc:"Part of the icon placed closest to the anchor.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"icon-pitch-alignment":{type:"enum",values:{map:{doc:"The icon is aligned to the plane of the map."},viewport:{doc:"The icon is aligned to the plane of the viewport."},auto:{doc:"Automatically matches the value of `icon-rotation-alignment`."}},default:"auto",doc:"Orientation of icon when map is pitched.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-pitch-alignment":{type:"enum",values:{map:{doc:"The text is aligned to the plane of the map."},viewport:{doc:"The text is aligned to the plane of the viewport."},auto:{doc:"Automatically matches the value of `text-rotation-alignment`."}},default:"auto",doc:"Orientation of text when map is pitched.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"},"`auto` value":{js:"0.25.0",android:"4.2.0",ios:"3.4.0",macos:"0.3.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotation-alignment":{type:"enum",values:{map:{doc:"When `symbol-placement` is set to `point`, aligns text east-west. When `symbol-placement` is set to `line` or `line-center`, aligns text x-axes with the line."},viewport:{doc:"Produces glyphs whose x-axes are aligned with the x-axis of the viewport, regardless of the value of `symbol-placement`."},auto:{doc:"When `symbol-placement` is set to `point`, this is equivalent to `viewport`. When `symbol-placement` is set to `line` or `line-center`, this is equivalent to `map`."}},default:"auto",doc:"In combination with `symbol-placement`, determines the rotation behavior of the individual glyphs forming the text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"`auto` value":{js:"0.25.0",android:"4.2.0",ios:"3.4.0",macos:"0.3.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-field":{type:"formatted",default:"",tokens:!0,doc:"Value to use for a text label. If a plain `string` is provided, it will be treated as a `formatted` with default/inherited formatting options. SDF images are not supported in formatted text and will be ignored.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-font":{type:"array",value:"string",default:["Open Sans Regular","Arial Unicode MS Regular"],doc:"Font stack to use for displaying text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-size":{type:"number",default:16,minimum:0,units:"pixels",doc:"Font size.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-width":{type:"number",default:10,minimum:0,units:"ems",doc:"The maximum line width for text wrapping.",requires:["text-field",{"symbol-placement":["point"]}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-line-height":{type:"number",default:1.2,units:"ems",doc:"Text leading value for multi-line text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"2.3.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-letter-spacing":{type:"number",default:0,units:"ems",doc:"Text tracking amount.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.40.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-justify":{type:"enum",values:{auto:{doc:"The text is aligned towards the anchor position."},left:{doc:"The text is aligned to the left."},center:{doc:"The text is centered."},right:{doc:"The text is aligned to the right."}},default:"center",doc:"Text justification options.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"},auto:{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-radial-offset":{type:"number",units:"ems",default:0,doc:"Radial offset of text, in the direction of the symbol's anchor. Useful in combination with `text-variable-anchor`, which defaults to using the two-dimensional `text-offset` if present.","sdk-support":{"basic functionality":{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"},"data-driven styling":{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"}},requires:["text-field"],"property-type":"data-driven",expression:{interpolated:!0,parameters:["zoom","feature"]}},"text-variable-anchor":{type:"array",value:"enum",values:{center:{doc:"The center of the text is placed closest to the anchor."},left:{doc:"The left side of the text is placed closest to the anchor."},right:{doc:"The right side of the text is placed closest to the anchor."},top:{doc:"The top of the text is placed closest to the anchor."},bottom:{doc:"The bottom of the text is placed closest to the anchor."},"top-left":{doc:"The top left corner of the text is placed closest to the anchor."},"top-right":{doc:"The top right corner of the text is placed closest to the anchor."},"bottom-left":{doc:"The bottom left corner of the text is placed closest to the anchor."},"bottom-right":{doc:"The bottom right corner of the text is placed closest to the anchor."}},requires:["text-field",{"symbol-placement":["point"]}],doc:"To increase the chance of placing high-priority labels on the map, you can provide an array of `text-anchor` locations: the renderer will attempt to place the label at each location, in order, before moving onto the next label. Use `text-justify: auto` to choose justification based on anchor position. To apply an offset, use the `text-radial-offset` or the two-dimensional `text-offset`.","sdk-support":{"basic functionality":{js:"0.54.0",android:"7.4.0",ios:"4.10.0",macos:"0.14.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-anchor":{type:"enum",values:{center:{doc:"The center of the text is placed closest to the anchor."},left:{doc:"The left side of the text is placed closest to the anchor."},right:{doc:"The right side of the text is placed closest to the anchor."},top:{doc:"The top of the text is placed closest to the anchor."},bottom:{doc:"The bottom of the text is placed closest to the anchor."},"top-left":{doc:"The top left corner of the text is placed closest to the anchor."},"top-right":{doc:"The top right corner of the text is placed closest to the anchor."},"bottom-left":{doc:"The bottom left corner of the text is placed closest to the anchor."},"bottom-right":{doc:"The bottom right corner of the text is placed closest to the anchor."}},default:"center",doc:"Part of the text placed closest to the anchor.",requires:["text-field",{"!":"text-variable-anchor"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-max-angle":{type:"number",default:45,units:"degrees",doc:"Maximum angle change between adjacent characters.",requires:["text-field",{"symbol-placement":["line","line-center"]}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-writing-mode":{type:"array",value:"enum",values:{horizontal:{doc:"If a text's language supports horizontal writing mode, symbols would be laid out horizontally."},vertical:{doc:"If a text's language supports vertical writing mode, symbols would be laid out vertically."}},doc:"The property allows control over a symbol's orientation. Note that the property values act as a hint, so that a symbol whose language doesn’t support the provided orientation will be laid out in its natural orientation. Example: English point symbol will be rendered horizontally even if array value contains single 'vertical' enum value. For symbol with point placement, the order of elements in an array define priority order for the placement of an orientation variant. For symbol with line placement, the default text writing mode is either ['horizontal', 'vertical'] or ['vertical', 'horizontal'], the order doesn't affect the placement.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"1.3.0",android:"8.3.0",ios:"5.3.0",macos:"0.15.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-rotate":{type:"number",default:0,period:360,units:"degrees",doc:"Rotates the text clockwise.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-padding":{type:"number",default:2,minimum:0,units:"pixels",doc:"Size of the additional area around the text bounding box used for detecting symbol collisions.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-keep-upright":{type:"boolean",default:!0,doc:"If true, the text may be flipped vertically to prevent it from being rendered upside-down.",requires:["text-field",{"text-rotation-alignment":"map"},{"symbol-placement":["line","line-center"]}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-transform":{type:"enum",values:{none:{doc:"The text is not altered."},uppercase:{doc:"Forces all letters to be displayed in uppercase."},lowercase:{doc:"Forces all letters to be displayed in lowercase."}},default:"none",doc:"Specifies how to capitalize text, similar to the CSS `text-transform` property.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-offset":{type:"array",doc:"Offset distance of text from its anchor. Positive values indicate right and down, while negative values indicate left and up. If used with text-variable-anchor, input values will be taken as absolute values. Offsets along the x- and y-axis will be applied automatically based on the anchor position.",value:"number",units:"ems",length:2,default:[0,0],requires:["text-field",{"!":"text-radial-offset"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.35.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature"]},"property-type":"data-driven"},"text-allow-overlap":{type:"boolean",default:!1,doc:"If true, the text will be visible even if it collides with other previously drawn symbols.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-ignore-placement":{type:"boolean",default:!1,doc:"If true, other symbols can be visible even if they collide with the text.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-optional":{type:"boolean",default:!1,doc:"If true, icons will display without their corresponding text when the text collides with other symbols and the icon does not.",requires:["text-field","icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_raster:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},"property-type":"constant"}},layout_hillshade:{visibility:{type:"enum",values:{visible:{doc:"The layer is shown."},none:{doc:"The layer is not shown."}},default:"visible",doc:"Whether this layer is displayed.","sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},"property-type":"constant"}},filter:{type:"array",value:"*",doc:"A filter selects specific features from a layer."},filter_symbol:{type:"boolean",doc:'Expression which determines whether or not to display a symbol. Symbols support dynamic filtering, meaning this expression can use the `["pitch"]` and `["distance-from-center"]` expressions to reference the current state of the view.',default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature","pitch","distance-from-center"]}},filter_fill:{type:"boolean",doc:'Expression which determines whether or not to display a polygon. Fill layer does NOT support dynamic filtering, meaning this expression can NOT use the `["pitch"]` and `["distance-from-center"]` expressions to reference the current state of the view.',default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}},filter_line:{type:"boolean",doc:'Expression which determines whether or not to display a Polygon or LineString. Line layer does NOT support dynamic filtering, meaning this expression can NOT use the `["pitch"]` and `["distance-from-center"]` expressions to reference the current state of the view.',default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}},filter_circle:{type:"boolean",doc:'Expression which determines whether or not to display a circle. Circle layer does NOT support dynamic filtering, meaning this expression can NOT use the `["pitch"]` and `["distance-from-center"]` expressions to reference the current state of the view.',default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}},"filter_fill-extrusion":{type:"boolean",doc:'Expression which determines whether or not to display a Polygon. Fill-extrusion layer does NOT support dynamic filtering, meaning this expression can NOT use the `["pitch"]` and `["distance-from-center"]` expressions to reference the current state of the view.',default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}},filter_heatmap:{type:"boolean",doc:'Expression used to determine whether a point is being displayed or not. Heatmap layer does NOT support dynamic filtering, meaning this expression can NOT use the `["pitch"]` and `["distance-from-center"]` expressions to reference the current state of the view.',default:!1,transition:!1,"property-type":"data-driven",expression:{interpolated:!1,parameters:["zoom","feature"]}},filter_operator:{type:"enum",values:{"==":{doc:'`["==", key, value]` equality: `feature[key] = value`'},"!=":{doc:'`["!=", key, value]` inequality: `feature[key] ≠ value`'},">":{doc:'`[">", key, value]` greater than: `feature[key] > value`'},">=":{doc:'`[">=", key, value]` greater than or equal: `feature[key] ≥ value`'},"<":{doc:'`["<", key, value]` less than: `feature[key] < value`'},"<=":{doc:'`["<=", key, value]` less than or equal: `feature[key] ≤ value`'},in:{doc:'`["in", key, v0, ..., vn]` set inclusion: `feature[key] ∈ {v0, ..., vn}`'},"!in":{doc:'`["!in", key, v0, ..., vn]` set exclusion: `feature[key] ∉ {v0, ..., vn}`'},all:{doc:'`["all", f0, ..., fn]` logical `AND`: `f0 ∧ ... ∧ fn`'},any:{doc:'`["any", f0, ..., fn]` logical `OR`: `f0 ∨ ... ∨ fn`'},none:{doc:'`["none", f0, ..., fn]` logical `NOR`: `¬f0 ∧ ... ∧ ¬fn`'},has:{doc:'`["has", key]` `feature[key]` exists'},"!has":{doc:'`["!has", key]` `feature[key]` does not exist'},within:{doc:'`["within", object]` feature geometry is within object geometry'}},doc:"The filter operator."},geometry_type:{type:"enum",values:{Point:{doc:"Filter to point geometries."},LineString:{doc:"Filter to line geometries."},Polygon:{doc:"Filter to polygon geometries."}},doc:"The geometry type for the filter to select."},function:{expression:{type:"expression",doc:"An expression."},stops:{type:"array",doc:"An array of stops.",value:"function_stop"},base:{type:"number",default:1,minimum:0,doc:"The exponential base of the interpolation curve. It controls the rate at which the result increases. Higher values make the result increase more towards the high end of the range. With `1` the stops are interpolated linearly."},property:{type:"string",doc:"The name of a feature property to use as the function input.",default:"$zoom"},type:{type:"enum",values:{identity:{doc:"Return the input value as the output value."},exponential:{doc:"Generate an output by interpolating between stops just less than and just greater than the function input."},interval:{doc:"Return the output value of the stop just less than the function input."},categorical:{doc:"Return the output value of the stop equal to the function input."}},doc:"The interpolation strategy to use in function evaluation.",default:"exponential"},colorSpace:{type:"enum",values:{rgb:{doc:"Use the RGB color space to interpolate color values"},lab:{doc:"Use the LAB color space to interpolate color values."},hcl:{doc:"Use the HCL color space to interpolate color values, interpolating the Hue, Chroma, and Luminance channels individually."}},doc:"The color space in which colors interpolated. Interpolating colors in perceptual color spaces like LAB and HCL tend to produce color ramps that look more consistent and produce colors that can be differentiated more easily than those interpolated in RGB space.",default:"rgb"},default:{type:"*",required:!1,doc:"A value to serve as a fallback function result when a value isn't otherwise available. It is used in the following circumstances:\n* In categorical functions, when the feature value does not match any of the stop domain values.\n* In property and zoom-and-property functions, when a feature does not contain a value for the specified property.\n* In identity functions, when the feature value is not valid for the style property (for example, if the function is being used for a `circle-color` property but the feature property value is not a string or not a valid color).\n* In interval or exponential property and zoom-and-property functions, when the feature value is not numeric.\nIf no default is provided, the style property's default is used in these circumstances."}},function_stop:{type:"array",minimum:0,maximum:24,value:["number","color"],length:2,doc:"Zoom level and value pair."},expression:{type:"array",value:"*",minimum:1,doc:"An expression defines a function that can be used for data-driven style properties or feature filters."},expression_name:{doc:"",type:"enum",values:{let:{doc:'Binds expressions to named variables, which can then be referenced in the result expression using ["var", "variable_name"].',group:"Variable binding","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},var:{doc:'References variable bound using "let".',group:"Variable binding","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},literal:{doc:"Provides a literal array or object value.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},array:{doc:"Asserts that the input is an array (optionally with a specific item type and length). If, when the input expression is evaluated, it is not of the asserted type, then this assertion will cause the whole expression to be aborted.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},at:{doc:"Retrieves an item from an array.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},in:{doc:"Determines whether an item exists in an array or a substring exists in a string. In the specific case when the second and third arguments are string literals, you must wrap at least one of them in a [`literal`](#types-literal) expression to hint correct interpretation to the [type system](#type-system).",group:"Lookup","sdk-support":{"basic functionality":{js:"1.6.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}}},"index-of":{doc:"Returns the first position at which an item can be found in an array or a substring can be found in a string, or `-1` if the input cannot be found. Accepts an optional index from where to begin the search.",group:"Lookup","sdk-support":{"basic functionality":{js:"1.10.0"}}},slice:{doc:"Returns an item from an array or a substring from a string from a specified start index, or between a start index and an end index if set. The return value is inclusive of the start index but not of the end index.",group:"Lookup","sdk-support":{"basic functionality":{js:"1.10.0"}}},case:{doc:"Selects the first output whose corresponding test condition evaluates to true, or the fallback value otherwise.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},match:{doc:'Selects the output for which the label value matches the input value, or the fallback value if no match is found. The input can be any expression (for example, `["get", "building_type"]`). Each label must be unique, and must be either:\n - a single literal value; or\n - an array of literal values, the values of which must be all strings or all numbers (for example `[100, 101]` or `["c", "b"]`).\n\nThe input matches if any of the values in the array matches using strict equality, similar to the `"in"` operator.\nIf the input type does not match the type of the labels, the result will be the fallback value.',group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},coalesce:{doc:"Evaluates each expression in turn until the first valid value is obtained. Invalid values are `null` and [`'image'`](#types-image) expressions that are unavailable in the style. If all values are invalid, `coalesce` returns the first value listed.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},step:{doc:'Produces discrete, stepped results by evaluating a piecewise-constant function defined by pairs of input and output values ("stops"). The `input` may be any numeric expression (e.g., `["get", "population"]`). Stop inputs must be numeric literals in strictly ascending order. Returns the output value of the stop just less than the input, or the first output if the input is less than the first stop.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.42.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},interpolate:{doc:'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). The `input` may be any numeric expression (e.g., `["get", "population"]`). Stop inputs must be numeric literals in strictly ascending order. The output type must be `number`, `array`, or `color`.\n\nInterpolation types:\n- `["linear"]`: Interpolates linearly between the pair of stops just less than and just greater than the input.\n- `["exponential", base]`: Interpolates exponentially between the stops just less than and just greater than the input. `base` controls the rate at which the output increases: higher values make the output increase more towards the high end of the range. With values close to 1 the output increases linearly.\n- `["cubic-bezier", x1, y1, x2, y2]`: Interpolates using the cubic bezier curve defined by the given control points.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.42.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"interpolate-hcl":{doc:'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the Hue-Chroma-Luminance color space.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.49.0"}}},"interpolate-lab":{doc:'Produces continuous, smooth results by interpolating between pairs of input and output values ("stops"). Works like `interpolate`, but the output type must be `color`, and the interpolation is performed in the CIELAB color space.',group:"Ramps, scales, curves","sdk-support":{"basic functionality":{js:"0.49.0"}}},ln2:{doc:"Returns mathematical constant ln(2).",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},pi:{doc:"Returns the mathematical constant pi.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},e:{doc:"Returns the mathematical constant e.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},typeof:{doc:"Returns a string describing the type of the given value.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},string:{doc:"Asserts that the input value is a string. If multiple values are provided, each one is evaluated in order until a string is obtained. If none of the inputs are strings, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},number:{doc:"Asserts that the input value is a number. If multiple values are provided, each one is evaluated in order until a number is obtained. If none of the inputs are numbers, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},boolean:{doc:"Asserts that the input value is a boolean. If multiple values are provided, each one is evaluated in order until a boolean is obtained. If none of the inputs are booleans, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},object:{doc:"Asserts that the input value is an object. If multiple values are provided, each one is evaluated in order until an object is obtained. If none of the inputs are objects, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},collator:{doc:"Returns a `collator` for use in locale-dependent comparison operations. The `case-sensitive` and `diacritic-sensitive` options default to `false`. The `locale` argument specifies the IETF language tag of the locale to use. If none is provided, the default locale is used. If the requested locale is not available, the `collator` will use a system-defined fallback locale. Use `resolved-locale` to test the results of locale fallback behavior.",group:"Types","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},format:{doc:'Returns a `formatted` string for displaying mixed-format text in the `text-field` property. The input may contain a string literal or expression, including an [`\'image\'`](#types-image) expression. Strings may be followed by a style override object that supports the following properties:\n- `"text-font"`: Overrides the font stack specified by the root layout property.\n- `"text-color"`: Overrides the color specified by the root paint property.\n- `"font-scale"`: Applies a scaling factor on `text-size` as specified by the root layout property.',group:"Types","sdk-support":{"basic functionality":{js:"0.48.0",android:"6.7.0",ios:"4.6.0",macos:"0.12.0"},"text-font":{js:"0.48.0",android:"6.7.0",ios:"4.6.0",macos:"0.12.0"},"font-scale":{js:"0.48.0",android:"6.7.0",ios:"4.6.0",macos:"0.12.0"},"text-color":{js:"1.3.0",android:"7.3.0",ios:"4.10.0",macos:"0.14.0"},image:{js:"1.6.0",android:"8.6.0",ios:"5.7.0",macos:"0.15.0"}}},image:{doc:"Returns a [`ResolvedImage`](/mapbox-gl-js/style-spec/types/#resolvedimage) for use in [`icon-image`](/mapbox-gl-js/style-spec/layers/#layout-symbol-icon-image), `*-pattern` entries, and as a section in the [`'format'`](#types-format) expression. A [`'coalesce'`](#coalesce) expression containing `image` expressions will evaluate to the first listed image that is currently in the style. This validation process is synchronous and requires the image to have been added to the style before requesting it in the `'image'` argument.",group:"Types","sdk-support":{"basic functionality":{js:"1.4.0",android:"8.6.0",ios:"5.7.0",macos:"0.15.0"}}},"number-format":{doc:"Converts the input number into a string representation using the providing formatting rules. If set, the `locale` argument specifies the locale to use, as a BCP 47 language tag. If set, the `currency` argument specifies an ISO 4217 code to use for currency-style formatting. If set, the `min-fraction-digits` and `max-fraction-digits` arguments specify the minimum and maximum number of fractional digits to include.",group:"Types","sdk-support":{"basic functionality":{js:"0.54.0",android:"8.4.0",ios:"5.4.0",macos:"0.15.0"}}},"to-string":{doc:'Converts the input value to a string. If the input is `null`, the result is `""`. If the input is a [`boolean`](#types-boolean), the result is `"true"` or `"false"`. If the input is a number, it is converted to a string as specified by the ["NumberToString" algorithm](https://tc39.github.io/ecma262/#sec-tostring-applied-to-the-number-type) of the ECMAScript Language Specification. If the input is a [`color`](#color), it is converted to a string of the form `"rgba(r,g,b,a)"`, where `r`, `g`, and `b` are numerals ranging from 0 to 255, and `a` ranges from 0 to 1. If the input is an [`\'image\'`](#types-image) expression, `\'to-string\'` returns the image name. Otherwise, the input is converted to a string in the format specified by the [`JSON.stringify`](https://tc39.github.io/ecma262/#sec-json.stringify) function of the ECMAScript Language Specification.',group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-number":{doc:'Converts the input value to a number, if possible. If the input is `null` or `false`, the result is 0. If the input is `true`, the result is 1. If the input is a string, it is converted to a number as specified by the ["ToNumber Applied to the String Type" algorithm](https://tc39.github.io/ecma262/#sec-tonumber-applied-to-the-string-type) of the ECMAScript Language Specification. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.',group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-boolean":{doc:"Converts the input value to a boolean. The result is `false` when then input is an empty string, 0, `false`, `null`, or `NaN`; otherwise it is `true`.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-rgba":{doc:"Returns a four-element array containing the input color's red, green, blue, and alpha components, in that order.",group:"Color","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"to-color":{doc:"Converts the input value to a color. If multiple values are provided, each one is evaluated in order until the first successful conversion is obtained. If none of the inputs can be converted, the expression is an error.",group:"Types","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},rgb:{doc:"Creates a color value from red, green, and blue components, which must range between 0 and 255, and an alpha component of 1. If any component is out of range, the expression is an error.",group:"Color","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},rgba:{doc:"Creates a color value from red, green, blue components, which must range between 0 and 255, and an alpha component which must range between 0 and 1. If any component is out of range, the expression is an error.",group:"Color","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},get:{doc:"Retrieves a property value from the current feature's properties, or from another object if a second argument is provided. Returns `null` if the requested property is missing.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},has:{doc:"Tests for the presence of an property value in the current feature's properties, or from another object if a second argument is provided.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},length:{doc:"Returns the length of an array or string.",group:"Lookup","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},properties:{doc:'Returns the feature properties object. Note that in some cases, it may be more efficient to use `["get", "property_name"]` directly.',group:"Feature data","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"feature-state":{doc:"Retrieves a property value from the current feature's state. Returns `null` if the requested property is not present on the feature's state. A feature's state is not part of the GeoJSON or vector tile data, and must be set programmatically on each feature. Features are identified by their `id` attribute, which must be an integer or a string that can be cast to an integer. Note that [\"feature-state\"] can only be used with paint properties that support data-driven styling.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.46.0"}}},"geometry-type":{doc:"Returns the feature's geometry type: `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`. `Multi*` feature types are only returned in GeoJSON sources. When working with vector tile sources, use the singular forms.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},id:{doc:"Returns the feature's id, if it has one.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},zoom:{doc:'Returns the current zoom level. Note that in style layout and paint properties, ["zoom"] may only appear as the input to a top-level "step" or "interpolate" expression.',group:"Camera","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},pitch:{doc:'Returns the current pitch in degrees. `["pitch"]` may only be used in the `filter` expression for a `symbol` layer.',group:"Camera","sdk-support":{"basic functionality":{js:"2.6.0"}}},"distance-from-center":{doc:'Returns the distance of a `symbol` instance from the center of the map. The distance is measured in pixels divided by the height of the map container. It measures 0 at the center, decreases towards the camera and increase away from the camera. For example, if the height of the map is 1000px, a value of -1 means 1000px away from the center towards the camera, and a value of 1 means a distance of 1000px away from the camera from the center. `["distance-from-center"]` may only be used in the `filter` expression for a `symbol` layer.',group:"Camera","sdk-support":{"basic functionality":{js:"2.6.0"}}},"heatmap-density":{doc:"Returns the kernel density estimation of a pixel in a heatmap layer, which is a relative measure of how many data points are crowded around a particular pixel. Can only be used in the `heatmap-color` property.",group:"Heatmap","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"line-progress":{doc:"Returns the progress along a gradient line. Can only be used in the `line-gradient` property.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.6.0",macos:"0.12.0"}}},"sky-radial-progress":{doc:"Returns the distance of a point on the sky from the sun position. Returns 0 at sun position and 1 when the distance reaches `sky-gradient-radius`. Can only be used in the `sky-gradient` property.",group:"sky","sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}}},accumulated:{doc:"Returns the value of a cluster property accumulated so far. Can only be used in the `clusterProperties` option of a clustered GeoJSON source.",group:"Feature data","sdk-support":{"basic functionality":{js:"0.53.0",android:"8.4.0",ios:"5.5.0",macos:"0.15.0"}}},"+":{doc:"Returns the sum of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"*":{doc:"Returns the product of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"-":{doc:"For two inputs, returns the result of subtracting the second input from the first. For a single input, returns the result of subtracting it from 0.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"/":{doc:"Returns the result of floating point division of the first input by the second.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"%":{doc:"Returns the remainder after integer division of the first input by the second.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"^":{doc:"Returns the result of raising the first input to the power specified by the second.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},sqrt:{doc:"Returns the square root of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.42.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},log10:{doc:"Returns the base-ten logarithm of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},ln:{doc:"Returns the natural logarithm of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},log2:{doc:"Returns the base-two logarithm of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},sin:{doc:"Returns the sine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},cos:{doc:"Returns the cosine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},tan:{doc:"Returns the tangent of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},asin:{doc:"Returns the arcsine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},acos:{doc:"Returns the arccosine of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},atan:{doc:"Returns the arctangent of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},min:{doc:"Returns the minimum value of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},max:{doc:"Returns the maximum value of the inputs.",group:"Math","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},round:{doc:'Rounds the input to the nearest integer. Halfway values are rounded away from zero. For example, `["round", -1.5]` evaluates to -2.',group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},abs:{doc:"Returns the absolute value of the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},ceil:{doc:"Returns the smallest integer that is greater than or equal to the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},floor:{doc:"Returns the largest integer that is less than or equal to the input.",group:"Math","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},distance:{doc:"Returns the shortest distance in meters between the evaluated feature and the input geometry. The input value can be a valid GeoJSON of type `Point`, `MultiPoint`, `LineString`, `MultiLineString`, `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Distance values returned may vary in precision due to loss in precision from encoding geometries, particularly below zoom level 13.",group:"Math","sdk-support":{"basic functionality":{android:"9.2.0",ios:"5.9.0",macos:"0.16.0"}}},"==":{doc:"Returns `true` if the input values are equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},"!=":{doc:"Returns `true` if the input values are not equal, `false` otherwise. The comparison is strictly typed: values of different runtime types are always considered unequal. Cases where the types are known to be different at parse time are considered invalid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},">":{doc:"Returns `true` if the first input is strictly greater than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},"<":{doc:"Returns `true` if the first input is strictly less than the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},">=":{doc:"Returns `true` if the first input is greater than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},"<=":{doc:"Returns `true` if the first input is less than or equal to the second, `false` otherwise. The arguments are required to be either both strings or both numbers; if during evaluation they are not, expression evaluation produces an error. Cases where this constraint is known not to hold at parse time are considered in valid and will produce a parse error. Accepts an optional `collator` argument to control locale-dependent string comparisons.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},collator:{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}},all:{doc:"Returns `true` if all the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `false`, the result is `false` and no further input expressions are evaluated.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},any:{doc:"Returns `true` if any of the inputs are `true`, `false` otherwise. The inputs are evaluated in order, and evaluation is short-circuiting: once an input expression evaluates to `true`, the result is `true` and no further input expressions are evaluated.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"!":{doc:"Logical negation. Returns `true` if the input is `false`, and `false` if the input is `true`.",group:"Decision","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},within:{doc:"Returns `true` if the evaluated feature is fully contained inside a boundary of the input geometry, `false` otherwise. The input value can be a valid GeoJSON of type `Polygon`, `MultiPolygon`, `Feature`, or `FeatureCollection`. Supported features for evaluation:\n- `Point`: Returns `false` if a point is on the boundary or falls outside the boundary.\n- `LineString`: Returns `false` if any part of a line falls outside the boundary, the line intersects the boundary, or a line's endpoint is on the boundary.",group:"Decision","sdk-support":{"basic functionality":{js:"1.9.0",android:"9.1.0",ios:"5.8.0",macos:"0.15.0"}}},"is-supported-script":{doc:"Returns `true` if the input string is expected to render legibly. Returns `false` if the input string contains sections that cannot be rendered without potential loss of meaning (e.g. Indic scripts that require complex text shaping, or right-to-left scripts if the the `mapbox-gl-rtl-text` plugin is not in use in Mapbox GL JS).",group:"String","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.6.0"}}},upcase:{doc:"Returns the input string converted to uppercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.",group:"String","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},downcase:{doc:"Returns the input string converted to lowercase. Follows the Unicode Default Case Conversion algorithm and the locale-insensitive case mappings in the Unicode Character Database.",group:"String","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},concat:{doc:"Returns a `string` consisting of the concatenation of the inputs. Each input is converted to a string as if by `to-string`.",group:"String","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}}},"resolved-locale":{doc:"Returns the IETF language tag of the locale being used by the provided `collator`. This can be used to determine the default system locale, or to determine if a requested locale was successfully loaded.",group:"String","sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.2.0",macos:"0.9.0"}}}}},fog:{range:{type:"array",default:[.5,10],minimum:-20,maximum:20,length:2,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},doc:"The start and end distance range in which fog fades from fully transparent to fully opaque. The distance to the point at the center of the map is defined as zero, so that negative range values are closer to the camera, and positive values are farther away.",example:[.5,10],"sdk-support":{"basic functionality":{js:"2.3.0"}}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"The color of the fog. Using opacity is recommended only for smoothly transitioning fog on/off as anything less than 100% opacity results in more tiles loaded and drawn.","sdk-support":{"basic functionality":{js:"2.3.0"}}},"horizon-blend":{type:"number","property-type":"data-constant",default:.1,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"Horizon blend applies a smooth fade from the color of the fog to the color of the sky. A value of zero leaves a sharp transition from fog to sky. Increasing the value blends the color of fog into increasingly high angles of the sky.","sdk-support":{"basic functionality":{js:"2.3.0"}}}},light:{anchor:{type:"enum",default:"viewport",values:{map:{doc:"The position of the light source is aligned to the rotation of the map."},viewport:{doc:"The position of the light source is aligned to the rotation of the viewport."}},"property-type":"data-constant",transition:!1,expression:{interpolated:!1,parameters:["zoom"]},doc:"Whether extruded geometries are lit relative to the map or viewport.",example:"map","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},position:{type:"array",default:[1.15,210,30],length:3,value:"number","property-type":"data-constant",transition:!0,expression:{interpolated:!0,parameters:["zoom"]},doc:"Position of the light source relative to lit (extruded) geometries, in [r radial coordinate, a azimuthal angle, p polar angle] where r indicates the distance from the center of the base of an object to its light, a indicates the position of the light relative to 0° (0° when `light.anchor` is set to `viewport` corresponds to the top of the viewport, or 0° when `light.anchor` is set to `map` corresponds to due north, and degrees proceed clockwise), and p indicates the height of the light (from 0°, directly above, to 180°, directly below).",example:[1.5,90,80],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},color:{type:"color","property-type":"data-constant",default:"#ffffff",expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"Color tint for lighting extruded geometries.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}},intensity:{type:"number","property-type":"data-constant",default:.5,minimum:0,maximum:1,expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"Intensity of lighting (on a scale from 0 to 1). Higher numbers will present as more extreme contrast.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}}}},projection:{name:{type:"enum",values:{albers:{doc:"An Albers equal-area projection centered on the continental United States. You can configure the projection for a different region by setting `center` and `parallels` properties. You may want to set max bounds to constrain the map to the relevant region."},equalEarth:{doc:"An Equal Earth projection."},equirectangular:{doc:"An Equirectangular projection. This projection is very similar to the Plate Carrée projection."},lambertConformalConic:{doc:"A Lambert conformal conic projection. You can configure the projection for a region by setting `center` and `parallels` properties. You may want to set max bounds to constrain the map to the relevant region."},mercator:{doc:"The Mercator projection is the default projection."},naturalEarth:{doc:"A Natural Earth projection."},winkelTripel:{doc:"A Winkel Tripel projection."}},default:"mercator",doc:"The name of the projection to be used for rendering the map.",required:!0,"sdk-support":{"basic functionality":{js:"2.6.0"}}},center:{type:"array",length:2,value:"number","property-type":"data-constant",transition:!1,doc:"The reference longitude and latitude of the projection. `center` takes the form of [lng, lat]. This property is only configurable for conic projections (Albers and Lambert Conformal Conic). All other projections are centered on [0, 0].",example:[-96,37.5],requires:[{name:["albers","lambertConformalConic"]}],"sdk-support":{"basic functionality":{js:"2.6.0"}}},parallels:{type:"array",length:2,value:"number","property-type":"data-constant",transition:!1,doc:"The standard parallels of the projection, denoting the desired latitude range with minimal distortion. `parallels` takes the form of [lat0, lat1]. This property is only configurable for conic projections (Albers and Lambert Conformal Conic).",example:[29.5,45.5],requires:[{name:["albers","lambertConformalConic"]}],"sdk-support":{"basic functionality":{js:"2.6.0"}}}},terrain:{source:{type:"string",doc:"Name of a source of `raster_dem` type to be used for terrain elevation.",required:!0,"sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}}},exaggeration:{type:"number","property-type":"data-constant",default:1,minimum:0,maximum:1e3,expression:{interpolated:!0,parameters:["zoom"]},transition:!0,doc:"Exaggerates the elevation of the terrain by multiplying the data from the DEM with this value.","sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}}}},paint:["paint_fill","paint_line","paint_circle","paint_heatmap","paint_fill-extrusion","paint_symbol","paint_raster","paint_hillshade","paint_background","paint_sky"],paint_fill:{"fill-antialias":{type:"boolean",default:!0,doc:"Whether or not the fill should be antialiased.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity of the entire fill layer. In contrast to the `fill-color`, this value will also affect the 1px stroke around the fill, if the stroke is used.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.21.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-color":{type:"color",default:"#000000",doc:"The color of the filled part of this layer. This color can be specified as `rgba` with an alpha component and the color's opacity will not affect the opacity of the 1px stroke, if it is used.",transition:!0,requires:[{"!":"fill-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.19.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-outline-color":{type:"color",doc:"The outline color of the fill. Matches the value of `fill-color` if unspecified.",transition:!0,requires:[{"!":"fill-pattern"},{"fill-antialias":!0}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.19.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-translate-anchor":{type:"enum",values:{map:{doc:"The fill is translated relative to the map."},viewport:{doc:"The fill is translated relative to the viewport."}},doc:"Controls the frame of reference for `fill-translate`.",default:"map",requires:["fill-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing image fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.49.0",android:"6.5.0",macos:"0.11.0",ios:"4.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"}},"paint_fill-extrusion":{"fill-extrusion-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity of the entire fill extrusion layer. This is rendered on a per-layer, not per-feature, basis, and data-driven styling is not available.",transition:!0,"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-color":{type:"color",default:"#000000",doc:"The base color of the extruded fill. The extrusion's surfaces will be shaded differently based on this color in combination with the root `light` settings. If this color is specified as `rgba` with an alpha component, the alpha component will be ignored; use `fill-extrusion-opacity` to set layer opacity.",transition:!0,requires:[{"!":"fill-extrusion-pattern"}],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up (on the flat plane), respectively.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-translate-anchor":{type:"enum",values:{map:{doc:"The fill extrusion is translated relative to the map."},viewport:{doc:"The fill extrusion is translated relative to the viewport."}},doc:"Controls the frame of reference for `fill-extrusion-translate`.",default:"map",requires:["fill-extrusion-translate"],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"fill-extrusion-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing images on extruded fills. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.49.0",android:"6.5.0",macos:"0.11.0",ios:"4.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"fill-extrusion-height":{type:"number",default:0,minimum:0,units:"meters",doc:"The height with which to extrude this layer.",transition:!0,"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-base":{type:"number",default:0,minimum:0,units:"meters",doc:"The height with which to extrude the base of this layer. Must be less than or equal to `fill-extrusion-height`.",transition:!0,requires:["fill-extrusion-height"],"sdk-support":{"basic functionality":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"},"data-driven styling":{js:"0.27.0",android:"5.1.0",ios:"3.6.0",macos:"0.5.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"fill-extrusion-vertical-gradient":{type:"boolean",default:!0,doc:"Whether to apply a vertical gradient to the sides of a fill-extrusion layer. If true, sides will be shaded slightly darker farther down.",transition:!1,"sdk-support":{"basic functionality":{js:"0.50.0",android:"7.0.0",ios:"4.7.0",macos:"0.13.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_line:{"line-opacity":{type:"number",doc:"The opacity at which the line will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-color":{type:"color",doc:"The color with which the line will be drawn.",default:"#000000",transition:!0,requires:[{"!":"line-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.23.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"line-translate-anchor":{type:"enum",values:{map:{doc:"The line is translated relative to the map."},viewport:{doc:"The line is translated relative to the viewport."}},doc:"Controls the frame of reference for `line-translate`.",default:"map",requires:["line-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"line-width":{type:"number",default:1,minimum:0,transition:!0,units:"pixels",doc:"Stroke thickness.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-gap-width":{type:"number",default:0,minimum:0,doc:"Draws a line casing outside of a line's actual path. Value indicates the width of the inner gap.",transition:!0,units:"pixels","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-offset":{type:"number",default:0,doc:"The line's offset. For linear features, a positive value offsets the line to the right, relative to the direction of the line, and a negative value to the left. For polygon features, a positive value results in an inset, and a negative value results in an outset.",transition:!0,units:"pixels","sdk-support":{"basic functionality":{js:"0.12.1",android:"3.0.0",ios:"3.1.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Blur applied to the line, in pixels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"line-dasharray":{type:"array",value:"number",doc:"Specifies the lengths of the alternating dashes and gaps that form the dash pattern. The lengths are later scaled by the line width. To convert a dash length to pixels, multiply the length by the current line width. Note that GeoJSON sources with `lineMetrics: true` specified won't render dashed lines to the expected scale. Also note that zoom-dependent expressions will be evaluated only at integer zoom levels.",minimum:0,transition:!0,units:"line widths",requires:[{"!":"line-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"2.3.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing image lines. For seamless patterns, image width must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.49.0",android:"6.5.0",macos:"0.11.0",ios:"4.4.0"}},expression:{interpolated:!1,parameters:["zoom","feature"]},"property-type":"cross-faded-data-driven"},"line-gradient":{type:"color",doc:'Defines a gradient with which to color a line feature. Can only be used with GeoJSON sources that specify `"lineMetrics": true`.',transition:!1,requires:[{"!":"line-pattern"},{source:"geojson",has:{lineMetrics:!0}}],"sdk-support":{"basic functionality":{js:"0.45.0",android:"6.5.0",ios:"4.4.0",macos:"0.11.0"},"data-driven styling":{}},expression:{interpolated:!0,parameters:["line-progress"]},"property-type":"color-ramp"}},paint_circle:{"circle-radius":{type:"number",default:5,minimum:0,transition:!0,units:"pixels",doc:"Circle radius.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.18.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-color":{type:"color",default:"#000000",doc:"The fill color of the circle.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.18.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-blur":{type:"number",default:0,doc:"Amount to blur the circle. 1 blurs the circle such that only the centerpoint is full opacity.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.20.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-opacity":{type:"number",doc:"The opacity at which the circle will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.20.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"The geometry's offset. Values are [x, y] where negatives indicate left and up, respectively.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"circle-translate-anchor":{type:"enum",values:{map:{doc:"The circle is translated relative to the map."},viewport:{doc:"The circle is translated relative to the viewport."}},doc:"Controls the frame of reference for `circle-translate`.",default:"map",requires:["circle-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-scale":{type:"enum",values:{map:{doc:"Circles are scaled according to their apparent distance to the camera."},viewport:{doc:"Circles are not scaled."}},default:"map",doc:"Controls the scaling behavior of the circle when the map is pitched.","sdk-support":{"basic functionality":{js:"0.21.0",android:"4.2.0",ios:"3.4.0",macos:"0.2.1"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-pitch-alignment":{type:"enum",values:{map:{doc:"The circle is aligned to the plane of the map."},viewport:{doc:"The circle is aligned to the plane of the viewport."}},default:"viewport",doc:"Orientation of circle when map is pitched.","sdk-support":{"basic functionality":{js:"0.39.0",android:"5.2.0",ios:"3.7.0",macos:"0.6.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"circle-stroke-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"The width of the circle's stroke. Strokes are placed outside of the `circle-radius`.","sdk-support":{"basic functionality":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-color":{type:"color",default:"#000000",doc:"The stroke color of the circle.",transition:!0,"sdk-support":{"basic functionality":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"circle-stroke-opacity":{type:"number",doc:"The opacity of the circle's stroke.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"},"data-driven styling":{js:"0.29.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"}},paint_heatmap:{"heatmap-radius":{type:"number",default:30,minimum:1,transition:!0,units:"pixels",doc:"Radius of influence of one heatmap point in pixels. Increasing the value makes the heatmap smoother, but less detailed. `queryRenderedFeatures` on heatmap layers will return points within this radius.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},"data-driven styling":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-weight":{type:"number",default:1,minimum:0,transition:!1,doc:"A measure of how much an individual point contributes to the heatmap. A value of 10 would be equivalent to having 10 points of weight 1 in the same spot. Especially useful when combined with clustering.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},"data-driven styling":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"heatmap-intensity":{type:"number",default:1,minimum:0,transition:!0,doc:"Similar to `heatmap-weight` but controls the intensity of the heatmap globally. Primarily used for adjusting the heatmap based on zoom level.","sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"heatmap-color":{type:"color",default:["interpolate",["linear"],["heatmap-density"],0,"rgba(0, 0, 255, 0)",.1,"royalblue",.3,"cyan",.5,"lime",.7,"yellow",1,"red"],doc:'Defines the color of each pixel based on its density value in a heatmap. Should be an expression that uses `["heatmap-density"]` as input.',transition:!1,"sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"},"data-driven styling":{}},expression:{interpolated:!0,parameters:["heatmap-density"]},"property-type":"color-ramp"},"heatmap-opacity":{type:"number",doc:"The global opacity at which the heatmap layer will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.41.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_symbol:{"icon-opacity":{doc:"The opacity at which the icon will be drawn.",type:"number",default:1,minimum:0,maximum:1,transition:!0,requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-color":{type:"color",default:"#000000",transition:!0,doc:"The color of the icon. This can only be used with [SDF icons](/help/troubleshooting/using-recolorable-images-in-mapbox-maps/).",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,doc:"The color of the icon's halo. Icon halos can only be used with [SDF icons](/help/troubleshooting/using-recolorable-images-in-mapbox-maps/).",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Distance of halo to the icon outline.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Fade out the halo towards the outside.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"icon-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"Distance that the icon's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.",requires:["icon-image"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"icon-translate-anchor":{type:"enum",values:{map:{doc:"Icons are translated relative to the map."},viewport:{doc:"Icons are translated relative to the viewport."}},doc:"Controls the frame of reference for `icon-translate`.",default:"map",requires:["icon-image","icon-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"text-opacity":{type:"number",doc:"The opacity at which the text will be drawn.",default:1,minimum:0,maximum:1,transition:!0,requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-color":{type:"color",doc:"The color with which the text will be drawn.",default:"#000000",transition:!0,overridable:!0,requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-color":{type:"color",default:"rgba(0, 0, 0, 0)",transition:!0,doc:"The color of the text's halo, which helps it stand out from backgrounds.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-width":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"Distance of halo to the font outline. Max text halo width is 1/4 of the font-size.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-halo-blur":{type:"number",default:0,minimum:0,transition:!0,units:"pixels",doc:"The halo's fadeout distance towards the outside.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{js:"0.33.0",android:"5.0.0",ios:"3.5.0",macos:"0.4.0"}},expression:{interpolated:!0,parameters:["zoom","feature","feature-state"]},"property-type":"data-driven"},"text-translate":{type:"array",value:"number",length:2,default:[0,0],transition:!0,units:"pixels",doc:"Distance that the text's anchor is moved from its original placement. Positive values indicate right and down, while negative values indicate left and up.",requires:["text-field"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"text-translate-anchor":{type:"enum",values:{map:{doc:"The text is translated relative to the map."},viewport:{doc:"The text is translated relative to the viewport."}},doc:"Controls the frame of reference for `text-translate`.",default:"map",requires:["text-field","text-translate"],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"}},paint_raster:{"raster-opacity":{type:"number",doc:"The opacity at which the image will be drawn.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-hue-rotate":{type:"number",default:0,period:360,transition:!0,units:"degrees",doc:"Rotates hues around the color wheel.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-min":{type:"number",doc:"Increase or reduce the brightness of the image. The value is the minimum brightness.",default:0,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-brightness-max":{type:"number",doc:"Increase or reduce the brightness of the image. The value is the maximum brightness.",default:1,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-saturation":{type:"number",doc:"Increase or reduce the saturation of the image.",default:0,minimum:-1,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-contrast":{type:"number",doc:"Increase or reduce the contrast of the image.",default:0,minimum:-1,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"raster-resampling":{type:"enum",doc:"The resampling/interpolation method to use for overscaling, also known as texture magnification filter",values:{linear:{doc:"(Bi)linear filtering interpolates pixel values using the weighted average of the four closest original source pixels creating a smooth but blurry look when overscaled"},nearest:{doc:"Nearest neighbor filtering interpolates pixel values using the nearest original source pixel creating a sharp but pixelated look when overscaled"}},default:"linear","sdk-support":{"basic functionality":{js:"0.47.0",android:"6.3.0",ios:"4.2.0",macos:"0.9.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"raster-fade-duration":{type:"number",default:300,minimum:0,transition:!1,units:"milliseconds",doc:"Fade duration when a new tile is added.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_hillshade:{"hillshade-illumination-direction":{type:"number",default:335,minimum:0,maximum:359,doc:"The direction of the light source used to generate the hillshading with 0 as the top of the viewport if `hillshade-illumination-anchor` is set to `viewport` and due north if `hillshade-illumination-anchor` is set to `map`.",transition:!1,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-illumination-anchor":{type:"enum",values:{map:{doc:"The hillshade illumination is relative to the north direction."},viewport:{doc:"The hillshade illumination is relative to the top of the viewport."}},default:"viewport",doc:"Direction of light source when map is rotated.","sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-exaggeration":{type:"number",doc:"Intensity of the hillshade",default:.5,minimum:0,maximum:1,transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-shadow-color":{type:"color",default:"#000000",doc:"The shading color of areas that face away from the light source.",transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-highlight-color":{type:"color",default:"#FFFFFF",doc:"The shading color of areas that faces towards the light source.",transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"hillshade-accent-color":{type:"color",default:"#000000",doc:"The shading color used to accentuate rugged terrain like sharp cliffs and gorges.",transition:!0,"sdk-support":{"basic functionality":{js:"0.43.0",android:"6.0.0",ios:"4.0.0",macos:"0.7.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_background:{"background-color":{type:"color",default:"#000000",doc:"The color with which the background will be drawn.",transition:!0,requires:[{"!":"background-pattern"}],"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"},"background-pattern":{type:"resolvedImage",transition:!0,doc:"Name of image in sprite to use for drawing an image background. For seamless patterns, image width and height must be a factor of two (2, 4, 8, ..., 512). Note that zoom-dependent expressions will be evaluated only at integer zoom levels.","sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"},"data-driven styling":{}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"cross-faded"},"background-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity at which the background will be drawn.",transition:!0,"sdk-support":{"basic functionality":{js:"0.10.0",android:"2.0.1",ios:"2.0.0",macos:"0.1.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},paint_sky:{"sky-type":{type:"enum",values:{gradient:{doc:"Renders the sky with a gradient that can be configured with `sky-gradient-radius` and `sky-gradient`."},atmosphere:{doc:"Renders the sky with a simulated atmospheric scattering algorithm, the sun direction can be attached to the light position or explicitly set through `sky-atmosphere-sun`."}},default:"atmosphere",doc:"The type of the sky","sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun":{type:"array",value:"number",length:2,units:"degrees",minimum:[0,0],maximum:[360,180],transition:!1,doc:"Position of the sun center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the sun relative to 0° north, where degrees proceed clockwise. The polar angle indicates the height of the sun, where 0° is directly above, at zenith, and 90° at the horizon. When this property is ommitted, the sun center is directly inherited from the light position.","sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}},requires:[{"sky-type":"atmosphere"}],expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-atmosphere-sun-intensity":{type:"number",requires:[{"sky-type":"atmosphere"}],default:10,minimum:0,maximum:100,transition:!1,doc:"Intensity of the sun as a light source in the atmosphere (on a scale from 0 to a 100). Setting higher values will brighten up the sky.","sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}},"property-type":"data-constant"},"sky-gradient-center":{type:"array",requires:[{"sky-type":"gradient"}],value:"number",default:[0,0],length:2,units:"degrees",minimum:[0,0],maximum:[360,180],transition:!1,doc:"Position of the gradient center [a azimuthal angle, p polar angle]. The azimuthal angle indicates the position of the gradient center relative to 0° north, where degrees proceed clockwise. The polar angle indicates the height of the gradient center, where 0° is directly above, at zenith, and 90° at the horizon.","sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-gradient-radius":{type:"number",requires:[{"sky-type":"gradient"}],default:90,minimum:0,maximum:180,transition:!1,doc:"The angular distance (measured in degrees) from `sky-gradient-center` up to which the gradient extends. A value of 180 causes the gradient to wrap around to the opposite direction from `sky-gradient-center`.","sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}},expression:{interpolated:!1,parameters:["zoom"]},"property-type":"data-constant"},"sky-gradient":{type:"color",default:["interpolate",["linear"],["sky-radial-progress"],.8,"#87ceeb",1,"white"],doc:"Defines a radial color gradient with which to color the sky. The color values can be interpolated with an expression using `sky-radial-progress`. The range [0, 1] for the interpolant covers a radial distance (in degrees) of [0, `sky-gradient-radius`] centered at the position specified by `sky-gradient-center`.",transition:!1,requires:[{"sky-type":"gradient"}],"sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"},"data-driven styling":{}},expression:{interpolated:!0,parameters:["sky-radial-progress"]},"property-type":"color-ramp"},"sky-atmosphere-halo-color":{type:"color",default:"white",doc:"A color applied to the atmosphere sun halo. The alpha channel describes how strongly the sun halo is represented in an atmosphere sky layer.",transition:!1,requires:[{"sky-type":"atmosphere"}],"sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}},"property-type":"data-constant"},"sky-atmosphere-color":{type:"color",default:"white",doc:"A color used to tweak the main atmospheric scattering coefficients. Using white applies the default coefficients giving the natural blue color to the atmosphere. This color affects how heavily the corresponding wavelength is represented during scattering. The alpha channel describes the density of the atmosphere, with 1 maximum density and 0 no density.",transition:!1,requires:[{"sky-type":"atmosphere"}],"sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}},"property-type":"data-constant"},"sky-opacity":{type:"number",default:1,minimum:0,maximum:1,doc:"The opacity of the entire sky layer.",transition:!0,"sdk-support":{"basic functionality":{js:"2.0.0",ios:"10.0.0",android:"10.0.0"}},expression:{interpolated:!0,parameters:["zoom"]},"property-type":"data-constant"}},transition:{duration:{type:"number",default:300,minimum:0,units:"milliseconds",doc:"Time allotted for transitions to complete."},delay:{type:"number",default:0,minimum:0,units:"milliseconds",doc:"Length of time before a transition begins."}},"property-type":{"data-driven":{type:"property-type",doc:"Property is interpolable and can be represented using a property expression."},"cross-faded":{type:"property-type",doc:"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms."},"cross-faded-data-driven":{type:"property-type",doc:"Property is non-interpolable; rather, its values will be cross-faded to smoothly transition between integer zooms. It can be represented using a property expression."},"color-ramp":{type:"property-type",doc:"Property should be specified using a color ramp from which the output color can be sampled based on a property calculation."},"data-constant":{type:"property-type",doc:"Property is interpolable but cannot be represented using a property expression."},constant:{type:"property-type",doc:"Property is constant across all zoom levels and property values."}},promoteId:{"*":{type:"string",doc:"A name of a feature property to use as ID for feature state."}}};var o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{};function a(t){var e={exports:{}};return t(e,e.exports),e.exports} +/*! https://mths.be/punycode v1.3.2 by @mathias */ +var s=a((function(t,e){!function(r){var n=e&&!e.nodeType&&e,i=t&&!t.nodeType&&t,a="object"==typeof o&&o;a.global!==a&&a.window!==a&&a.self!==a||(r=a);var s,l,u=2147483647,c=36,h=/^xn--/,f=/[^\x20-\x7E]/,p=/[\x2E\u3002\uFF0E\uFF61]/g,d={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},g=Math.floor,y=String.fromCharCode;function m(t){throw RangeError(d[t])}function _(t,e){for(var r=t.length,n=[];r--;)n[r]=e(t[r]);return n}function v(t,e){var r=t.split("@"),n="";return r.length>1&&(n=r[0]+"@",t=r[1]),n+_((t=t.replace(p,".")).split("."),e).join(".")}function b(t){for(var e,r,n=[],i=0,o=t.length;i=55296&&e<=56319&&i65535&&(e+=y((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+=y(t)})).join("")}function w(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function E(t,e,r){var n=0;for(t=r?g(t/700):t>>1,t+=g(t/e);t>455;n+=c)t=g(t/35);return g(n+36*t/(t+38))}function O(t){var e,r,n,i,o,a,s,l,h,f,p,d=[],y=t.length,_=0,v=128,b=72;for((r=t.lastIndexOf("-"))<0&&(r=0),n=0;n=128&&m("not-basic"),d.push(t.charCodeAt(n));for(i=r>0?r+1:0;i=y&&m("invalid-input"),((l=(p=t.charCodeAt(i++))-48<10?p-22:p-65<26?p-65:p-97<26?p-97:c)>=c||l>g((u-_)/a))&&m("overflow"),_+=l*a,!(l<(h=s<=b?1:s>=b+26?26:s-b));s+=c)a>g(u/(f=c-h))&&m("overflow"),a*=f;b=E(_-o,e=d.length+1,0==o),g(_/e)>u-v&&m("overflow"),v+=g(_/e),_%=e,d.splice(_++,0,v)}return x(d)}function S(t){var e,r,n,i,o,a,s,l,h,f,p,d,_,v,x,O=[];for(d=(t=b(t)).length,e=128,r=0,o=72,a=0;a=e&&pg((u-r)/(_=n+1))&&m("overflow"),r+=(s-e)*_,e=s,a=0;au&&m("overflow"),p==e){for(l=r,h=c;!(l<(f=h<=o?1:h>=o+26?26:h-o));h+=c)x=l-f,v=c-f,O.push(y(w(f+x%v,0))),l=g(x/v);O.push(y(w(l,0))),o=E(r,_,n==i),r=0,++n}++r,++e}return O.join("")}if(s={version:"1.3.2",ucs2:{decode:b,encode:x},decode:O,encode:S,toASCII:function(t){return v(t,(function(t){return f.test(t)?"xn--"+S(t):t}))},toUnicode:function(t){return v(t,(function(t){return h.test(t)?O(t.slice(4).toLowerCase()):t}))}},n&&i)if(t.exports==n)i.exports=s;else for(l in s)s.hasOwnProperty(l)&&(n[l]=s[l]);else r.punycode=s}(o)})),l=function(t){return"string"==typeof t},u=function(t){return"object"==typeof t&&null!==t},c=function(t){return null===t},h=function(t){return null==t};function f(t,e){return Object.prototype.hasOwnProperty.call(t,e)}var p=function(t,e,r,n){e=e||"&",r=r||"=";var i={};if("string"!=typeof t||0===t.length)return i;var o=/\+/g;t=t.split(e);var a=1e3;n&&"number"==typeof n.maxKeys&&(a=n.maxKeys);var s=t.length;a>0&&s>a&&(s=a);for(var l=0;l=0?(u=d.substr(0,g),c=d.substr(g+1)):(u=d,c=""),h=decodeURIComponent(u),p=decodeURIComponent(c),f(i,h)?Array.isArray(i[h])?i[h].push(p):i[h]=[i[h],p]:i[h]=p}return i},d=function(t){switch(typeof t){case"string":return t;case"boolean":return t?"true":"false";case"number":return isFinite(t)?t:"";default:return""}},g=function(t,e,r,n){return e=e||"&",r=r||"=",null===t&&(t=void 0),"object"==typeof t?Object.keys(t).map((function(n){var i=encodeURIComponent(d(n))+r;return Array.isArray(t[n])?t[n].map((function(t){return i+encodeURIComponent(d(t))})).join(e):i+encodeURIComponent(d(t[n]))})).join(e):n?encodeURIComponent(d(n))+r+encodeURIComponent(d(t)):""},y=a((function(t,e){e.decode=e.parse=p,e.encode=e.stringify=g}));function m(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var _=/^([a-z0-9.+-]+:)/i,v=/:[0-9]*$/,b=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,x=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),w=["'"].concat(x),E=["%","/","?",";","#"].concat(w),O=["/","?","#"],S=/^[+a-z0-9A-Z_-]{0,63}$/,I=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,C={javascript:!0,"javascript:":!0},T={javascript:!0,"javascript:":!0},P={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};function R(t,e,r){if(t&&u(t)&&t instanceof m)return t;var n=new m;return n.parse(t,e,r),n}m.prototype.parse=function(t,e,r){if(!l(t))throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var n=t.indexOf("?"),i=-1!==n&&n127?N+="x":N+=M[A];if(!N.match(S)){var j=R.slice(0,m),F=R.slice(m+1),D=M.match(I);D&&(j.push(D[1]),F.unshift(D[2])),F.length&&(a="/"+F.join(".")+a),this.hostname=j.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),x||(this.hostname=s.toASCII(this.hostname));var G=this.port?":"+this.port:"",U=this.hostname||"";this.host=U+G,this.href+=this.host,x&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==a[0]&&(a="/"+a))}if(!C[h])for(m=0,L=w.length;m0)&&r.host.split("@"))&&(r.auth=L.shift(),r.host=r.hostname=L.shift());return r.search=t.search,r.query=t.query,c(r.pathname)&&c(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!E.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var S=E.slice(-1)[0],I=(r.host||t.host||E.length>1)&&("."===S||".."===S)||""===S,C=0,R=E.length;R>=0;R--)"."===(S=E[R])?E.splice(R,1):".."===S?(E.splice(R,1),C++):C&&(E.splice(R,1),C--);if(!x&&!w)for(;C--;C)E.unshift("..");!x||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),I&&"/"!==E.join("/").substr(-1)&&E.push("");var L,M=""===E[0]||E[0]&&"/"===E[0].charAt(0);O&&(r.hostname=r.host=M?"":E.length?E.shift():"",(L=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=L.shift(),r.host=r.hostname=L.shift()));return(x=x||r.host&&E.length)&&!M&&E.unshift(""),E.length?r.pathname=E.join("/"):(r.pathname=null,r.path=null),c(r.pathname)&&c(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=t.auth||r.auth,r.slashes=r.slashes||t.slashes,r.href=r.format(),r},m.prototype.parseHost=function(){var t=this.host,e=v.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)};function L(t,...e){for(const r of e)for(const e in r)t[e]=r[e];return t}class M extends Error{constructor(t,e){super(e),this.message=e,this.key=t}}class N{constructor(t,e=[]){this.parent=t,this.bindings={};for(const[t,r]of e)this.bindings[t]=r}concat(t){return new N(this,t)}get(t){if(this.bindings[t])return this.bindings[t];if(this.parent)return this.parent.get(t);throw new Error(t+" not found in scope.")}has(t){return!!this.bindings[t]||!!this.parent&&this.parent.has(t)}}const A={kind:"null"},k={kind:"number"},j={kind:"string"},F={kind:"boolean"},D={kind:"color"},G={kind:"object"},U={kind:"value"},B={kind:"collator"},z={kind:"formatted"},V={kind:"resolvedImage"};function q(t,e){return{kind:"array",itemType:t,N:e}}function Y(t){if("array"===t.kind){const e=Y(t.itemType);return"number"==typeof t.N?`array<${e}, ${t.N}>`:"value"===t.itemType.kind?"array":`array<${e}>`}return t.kind}const W=[A,k,j,F,D,z,G,q(U),V];function X(t,e){if("error"===e.kind)return null;if("array"===t.kind){if("array"===e.kind&&(0===e.N&&"value"===e.itemType.kind||!X(t.itemType,e.itemType))&&("number"!=typeof t.N||t.N===e.N))return null}else{if(t.kind===e.kind)return null;if("value"===t.kind)for(const t of W)if(!X(t,e))return null}return`Expected ${Y(t)} but found ${Y(e)} instead.`}function H(t,e){return e.some(e=>e.kind===t.kind)}function Z(t,e){return e.some(e=>"null"===e?null===t:"array"===e?Array.isArray(t):"object"===e?t&&!Array.isArray(t)&&"object"==typeof t:e===typeof t)}var K=a((function(t,e){var r={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],rebeccapurple:[102,51,153,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function n(t){return(t=Math.round(t))<0?0:t>255?255:t}function i(t){return t<0?0:t>1?1:t}function o(t){return"%"===t[t.length-1]?n(parseFloat(t)/100*255):n(parseInt(t))}function a(t){return"%"===t[t.length-1]?i(parseFloat(t)/100):i(parseFloat(t))}function s(t,e,r){return r<0?r+=1:r>1&&(r-=1),6*r<1?t+(e-t)*r*6:2*r<1?e:3*r<2?t+(e-t)*(2/3-r)*6:t}try{e.parseCSSColor=function(t){var e,i=t.replace(/ /g,"").toLowerCase();if(i in r)return r[i].slice();if("#"===i[0])return 4===i.length?(e=parseInt(i.substr(1),16))>=0&&e<=4095?[(3840&e)>>4|(3840&e)>>8,240&e|(240&e)>>4,15&e|(15&e)<<4,1]:null:7===i.length&&(e=parseInt(i.substr(1),16))>=0&&e<=16777215?[(16711680&e)>>16,(65280&e)>>8,255&e,1]:null;var l=i.indexOf("("),u=i.indexOf(")");if(-1!==l&&u+1===i.length){var c=i.substr(0,l),h=i.substr(l+1,u-(l+1)).split(","),f=1;switch(c){case"rgba":if(4!==h.length)return null;f=a(h.pop());case"rgb":return 3!==h.length?null:[o(h[0]),o(h[1]),o(h[2]),f];case"hsla":if(4!==h.length)return null;f=a(h.pop());case"hsl":if(3!==h.length)return null;var p=(parseFloat(h[0])%360+360)%360/360,d=a(h[1]),g=a(h[2]),y=g<=.5?g*(d+1):g+d-g*d,m=2*g-y;return[n(255*s(m,y,p+1/3)),n(255*s(m,y,p)),n(255*s(m,y,p-1/3)),f];default:return null}}return null}}catch(t){}}));class J{constructor(t,e,r,n=1){this.r=t,this.g=e,this.b=r,this.a=n}static parse(t){if(!t)return;if(t instanceof J)return t;if("string"!=typeof t)return;const e=K.parseCSSColor(t);return e?new J(e[0]/255*e[3],e[1]/255*e[3],e[2]/255*e[3],e[3]):void 0}toString(){const[t,e,r,n]=this.toArray();return`rgba(${Math.round(t)},${Math.round(e)},${Math.round(r)},${n})`}toArray(){const{r:t,g:e,b:r,a:n}=this;return 0===n?[0,0,0,0]:[255*t/n,255*e/n,255*r/n,n]}}J.black=new J(0,0,0,1),J.white=new J(1,1,1,1),J.transparent=new J(0,0,0,0),J.red=new J(1,0,0,1),J.blue=new J(0,0,1,1);class ${constructor(t,e,r){this.sensitivity=t?e?"variant":"case":e?"accent":"base",this.locale=r,this.collator=new Intl.Collator(this.locale?this.locale:[],{sensitivity:this.sensitivity,usage:"search"})}compare(t,e){return this.collator.compare(t,e)}resolvedLocale(){return new Intl.Collator(this.locale?this.locale:[]).resolvedOptions().locale}}class Q{constructor(t,e,r,n,i){this.text=t.normalize?t.normalize():t,this.image=e,this.scale=r,this.fontStack=n,this.textColor=i}}class tt{constructor(t){this.sections=t}static fromString(t){return new tt([new Q(t,null,null,null,null)])}isEmpty(){return 0===this.sections.length||!this.sections.some(t=>0!==t.text.length||t.image&&0!==t.image.name.length)}static factory(t){return t instanceof tt?t:tt.fromString(t)}toString(){return 0===this.sections.length?"":this.sections.map(t=>t.text).join("")}serialize(){const t=["format"];for(const e of this.sections){if(e.image){t.push(["image",e.image.name]);continue}t.push(e.text);const r={};e.fontStack&&(r["text-font"]=["literal",e.fontStack.split(",")]),e.scale&&(r["font-scale"]=e.scale),e.textColor&&(r["text-color"]=["rgba"].concat(e.textColor.toArray())),t.push(r)}return t}}class et{constructor(t){this.name=t.name,this.available=t.available}toString(){return this.name}static fromString(t){return t?new et({name:t,available:!1}):null}serialize(){return["image",this.name]}}function rt(t,e,r,n){if(!("number"==typeof t&&t>=0&&t<=255&&"number"==typeof e&&e>=0&&e<=255&&"number"==typeof r&&r>=0&&r<=255)){return`Invalid rgba value [${("number"==typeof n?[t,e,r,n]:[t,e,r]).join(", ")}]: 'r', 'g', and 'b' must be between 0 and 255.`}return void 0===n||"number"==typeof n&&n>=0&&n<=1?null:`Invalid rgba value [${[t,e,r,n].join(", ")}]: 'a' must be between 0 and 1.`}function nt(t){if(null===t)return!0;if("string"==typeof t)return!0;if("boolean"==typeof t)return!0;if("number"==typeof t)return!0;if(t instanceof J)return!0;if(t instanceof $)return!0;if(t instanceof tt)return!0;if(t instanceof et)return!0;if(Array.isArray(t)){for(const e of t)if(!nt(e))return!1;return!0}if("object"==typeof t){for(const e in t)if(!nt(t[e]))return!1;return!0}return!1}function it(t){if(null===t)return A;if("string"==typeof t)return j;if("boolean"==typeof t)return F;if("number"==typeof t)return k;if(t instanceof J)return D;if(t instanceof $)return B;if(t instanceof tt)return z;if(t instanceof et)return V;if(Array.isArray(t)){const e=t.length;let r;for(const e of t){const t=it(e);if(r){if(r===t)continue;r=U;break}r=t}return q(r||U,e)}return G}function ot(t){const e=typeof t;return null===t?"":"string"===e||"number"===e||"boolean"===e?String(t):t instanceof J||t instanceof tt||t instanceof et?t.toString():JSON.stringify(t)}class at{constructor(t,e){this.type=t,this.value=e}static parse(t,e){if(2!==t.length)return e.error(`'literal' expression requires exactly one argument, but found ${t.length-1} instead.`);if(!nt(t[1]))return e.error("invalid value");const r=t[1];let n=it(r);const i=e.expectedType;return"array"!==n.kind||0!==n.N||!i||"array"!==i.kind||"number"==typeof i.N&&0!==i.N||(n=i),new at(n,r)}evaluate(){return this.value}eachChild(){}outputDefined(){return!0}serialize(){return"array"===this.type.kind||"object"===this.type.kind?["literal",this.value]:this.value instanceof J?["rgba"].concat(this.value.toArray()):this.value instanceof tt?this.value.serialize():this.value}}class st{constructor(t){this.name="ExpressionEvaluationError",this.message=t}toJSON(){return this.message}}const lt={string:j,number:k,boolean:F,object:G};class ut{constructor(t,e){this.type=t,this.args=e}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");let r,n=1;const i=t[0];if("array"===i){let i,o;if(t.length>2){const r=t[1];if("string"!=typeof r||!(r in lt)||"object"===r)return e.error('The item type argument of "array" must be one of string, number, boolean',1);i=lt[r],n++}else i=U;if(t.length>3){if(null!==t[2]&&("number"!=typeof t[2]||t[2]<0||t[2]!==Math.floor(t[2])))return e.error('The length argument to "array" must be a positive integer literal',2);o=t[2],n++}r=q(i,o)}else r=lt[i];const o=[];for(;nt.outputDefined())}serialize(){const t=this.type,e=[t.kind];if("array"===t.kind){const r=t.itemType;if("string"===r.kind||"number"===r.kind||"boolean"===r.kind){e.push(r.kind);const n=t.N;("number"==typeof n||this.args.length>1)&&e.push(n)}}return e.concat(this.args.map(t=>t.serialize()))}}class ct{constructor(t){this.type=z,this.sections=t}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const r=t[1];if(!Array.isArray(r)&&"object"==typeof r)return e.error("First argument must be an image or text section.");const n=[];let i=!1;for(let r=1;r<=t.length-1;++r){const o=t[r];if(i&&"object"==typeof o&&!Array.isArray(o)){i=!1;let t=null;if(o["font-scale"]&&(t=e.parse(o["font-scale"],1,k),!t))return null;let r=null;if(o["text-font"]&&(r=e.parse(o["text-font"],1,q(j)),!r))return null;let a=null;if(o["text-color"]&&(a=e.parse(o["text-color"],1,D),!a))return null;const s=n[n.length-1];s.scale=t,s.font=r,s.textColor=a}else{const o=e.parse(t[r],1,U);if(!o)return null;const a=o.type.kind;if("string"!==a&&"value"!==a&&"null"!==a&&"resolvedImage"!==a)return e.error("Formatted text type must be 'string', 'value', 'image' or 'null'.");i=!0,n.push({content:o,scale:null,font:null,textColor:null})}}return new ct(n)}evaluate(t){return new tt(this.sections.map(e=>{const r=e.content.evaluate(t);return it(r)===V?new Q("",r,null,null,null):new Q(ot(r),null,e.scale?e.scale.evaluate(t):null,e.font?e.font.evaluate(t).join(","):null,e.textColor?e.textColor.evaluate(t):null)}))}eachChild(t){for(const e of this.sections)t(e.content),e.scale&&t(e.scale),e.font&&t(e.font),e.textColor&&t(e.textColor)}outputDefined(){return!1}serialize(){const t=["format"];for(const e of this.sections){t.push(e.content.serialize());const r={};e.scale&&(r["font-scale"]=e.scale.serialize()),e.font&&(r["text-font"]=e.font.serialize()),e.textColor&&(r["text-color"]=e.textColor.serialize()),t.push(r)}return t}}class ht{constructor(t){this.type=V,this.input=t}static parse(t,e){if(2!==t.length)return e.error("Expected two arguments.");const r=e.parse(t[1],1,j);return r?new ht(r):e.error("No image name provided.")}evaluate(t){const e=this.input.evaluate(t),r=et.fromString(e);return r&&t.availableImages&&(r.available=t.availableImages.indexOf(e)>-1),r}eachChild(t){t(this.input)}outputDefined(){return!1}serialize(){return["image",this.input.serialize()]}}const ft={"to-boolean":F,"to-color":D,"to-number":k,"to-string":j};class pt{constructor(t,e){this.type=t,this.args=e}static parse(t,e){if(t.length<2)return e.error("Expected at least one argument.");const r=t[0];if(("to-boolean"===r||"to-string"===r)&&2!==t.length)return e.error("Expected one argument.");const n=ft[r],i=[];for(let r=1;r4?`Invalid rbga value ${JSON.stringify(e)}: expected an array containing either three or four numeric values.`:rt(e[0],e[1],e[2],e[3]),!r))return new J(e[0]/255,e[1]/255,e[2]/255,e[3])}throw new st(r||`Could not parse color from value '${"string"==typeof e?e:String(JSON.stringify(e))}'`)}if("number"===this.type.kind){let e=null;for(const r of this.args){if(e=r.evaluate(t),null===e)return 0;const n=Number(e);if(!isNaN(n))return n}throw new st(`Could not convert ${JSON.stringify(e)} to number.`)}return"formatted"===this.type.kind?tt.fromString(ot(this.args[0].evaluate(t))):"resolvedImage"===this.type.kind?et.fromString(ot(this.args[0].evaluate(t))):ot(this.args[0].evaluate(t))}eachChild(t){this.args.forEach(t)}outputDefined(){return this.args.every(t=>t.outputDefined())}serialize(){if("formatted"===this.type.kind)return new ct([{content:this.args[0],scale:null,font:null,textColor:null}]).serialize();if("resolvedImage"===this.type.kind)return new ht(this.args[0]).serialize();const t=["to-"+this.type.kind];return this.eachChild(e=>{t.push(e.serialize())}),t}}const dt=["Unknown","Point","LineString","Polygon"];class gt{constructor(){this.globals=null,this.feature=null,this.featureState=null,this.formattedSection=null,this._parseColorCache={},this.availableImages=null,this.canonical=null,this.featureTileCoord=null,this.featureDistanceData=null}id(){return this.feature&&"id"in this.feature&&this.feature.id?this.feature.id:null}geometryType(){return this.feature?"number"==typeof this.feature.type?dt[this.feature.type]:this.feature.type:null}geometry(){return this.feature&&"geometry"in this.feature?this.feature.geometry:null}canonicalID(){return this.canonical}properties(){return this.feature&&this.feature.properties||{}}distanceFromCenter(){if(this.featureTileCoord&&this.featureDistanceData){const t=this.featureDistanceData.center,e=this.featureDistanceData.scale,{x:r,y:n}=this.featureTileCoord,i=r*e-t[0],o=n*e-t[1];return this.featureDistanceData.bearing[0]*i+this.featureDistanceData.bearing[1]*o}return 0}parseColor(t){let e=this._parseColorCache[t];return e||(e=this._parseColorCache[t]=J.parse(t)),e}}class yt{constructor(t,e,r,n){this.name=t,this.type=e,this._evaluate=r,this.args=n}evaluate(t){return this._evaluate(t,this.args)}eachChild(t){this.args.forEach(t)}outputDefined(){return!1}serialize(){return[this.name].concat(this.args.map(t=>t.serialize()))}static parse(t,e){const r=t[0],n=yt.definitions[r];if(!n)return e.error(`Unknown expression "${r}". If you wanted a literal array, use ["literal", [...]].`,0);const i=Array.isArray(n)?n[0]:n.type,o=Array.isArray(n)?[[n[1],n[2]]]:n.overloads,a=o.filter(([e])=>!Array.isArray(e)||e.length===t.length-1);let s=null;for(const[n,o]of a){s=new Ut(e.registry,e.path,null,e.scope);const a=[];let l=!1;for(let e=1;e{return e=t,Array.isArray(e)?`(${e.map(Y).join(", ")})`:`(${Y(e.type)}...)`;var e}).join(" | "),n=[];for(let r=1;r=e[2])&&(!(t[1]<=e[1])&&!(t[3]>=e[3])))}function xt(t,e){const r=(180+t[0])/360;const n=(i=t[1],(180-180/Math.PI*Math.log(Math.tan(Math.PI/4+i*Math.PI/360)))/360);var i;const o=Math.pow(2,e.z);return[Math.round(r*o*_t),Math.round(n*o*_t)]}function wt(t,e,r){const n=t[0]-e[0],i=t[1]-e[1],o=t[0]-r[0],a=t[1]-r[1];return n*a-o*i==0&&n*o<=0&&i*a<=0}function Et(t,e){let r=!1;for(let a=0,s=e.length;an[1]!=o[1]>n[1]&&n[0]<(o[0]-i[0])*(n[1]-i[1])/(o[1]-i[1])+i[0]&&(r=!r)}}var n,i,o;return r}function Ot(t,e){for(let r=0;r0&&h<0||c<0&&h>0}function It(t,e,r,n){const i=[e[0]-t[0],e[1]-t[1]],o=[n[0]-r[0],n[1]-r[1]];return 0!=(a=o)[0]*(s=i)[1]-a[1]*s[0]&&!(!St(t,e,r,n)||!St(r,n,t,e));var a,s}function Ct(t,e,r){for(const n of r)for(let r=0;rr[2]){const e=.5*n;let i=t[0]-r[0]>e?-n:r[0]-t[0]>e?n:0;0===i&&(i=t[0]-r[2]>e?-n:r[2]-t[0]>e?n:0),t[0]+=i}vt(e,t)}function Nt(t,e,r,n){const i=Math.pow(2,n.z)*_t,o=[n.x*_t,n.y*_t],a=[];if(!t)return a;for(const n of t)for(const t of n){const n=[t.x+o[0],t.y+o[1]];Mt(n,e,r,i),a.push(n)}return a}function At(t,e,r,n){const i=Math.pow(2,n.z)*_t,o=[n.x*_t,n.y*_t],a=[];if(!t)return a;for(const r of t){const t=[];for(const n of r){const r=[n.x+o[0],n.y+o[1]];vt(e,r),t.push(r)}a.push(t)}if(e[2]-e[0]<=i/2){(s=e)[0]=s[1]=1/0,s[2]=s[3]=-1/0;for(const t of a)for(const n of t)Mt(n,e,r,i)}var s;return a}class kt{constructor(t,e){this.type=F,this.geojson=t,this.geometries=e}static parse(t,e){if(2!==t.length)return e.error(`'within' expression requires exactly one argument, but found ${t.length-1} instead.`);if(nt(t[1])){const e=t[1];if("FeatureCollection"===e.type)for(let t=0;t{e&&!jt(t)&&(e=!1)}),e}function Ft(t){if(t instanceof yt&&"feature-state"===t.name)return!1;let e=!0;return t.eachChild(t=>{e&&!Ft(t)&&(e=!1)}),e}function Dt(t,e){if(t instanceof yt&&e.indexOf(t.name)>=0)return!1;let r=!0;return t.eachChild(t=>{r&&!Dt(t,e)&&(r=!1)}),r}class Gt{constructor(t,e){this.type=e.type,this.name=t,this.boundExpression=e}static parse(t,e){if(2!==t.length||"string"!=typeof t[1])return e.error("'var' expression requires exactly one string literal argument.");const r=t[1];return e.scope.has(r)?new Gt(r,e.scope.get(r)):e.error(`Unknown variable "${r}". Make sure "${r}" has been bound in an enclosing "let" expression before using it.`,1)}evaluate(t){return this.boundExpression.evaluate(t)}eachChild(){}outputDefined(){return!1}serialize(){return["var",this.name]}}class Ut{constructor(t,e=[],r,n=new N,i=[]){this.registry=t,this.path=e,this.key=e.map(t=>`[${t}]`).join(""),this.scope=n,this.errors=i,this.expectedType=r}parse(t,e,r,n,i={}){return e?this.concat(e,r,n)._parse(t,i):this._parse(t,i)}_parse(t,e){function r(t,e,r){return"assert"===r?new ut(e,[t]):"coerce"===r?new pt(e,[t]):t}if(null!==t&&"string"!=typeof t&&"boolean"!=typeof t&&"number"!=typeof t||(t=["literal",t]),Array.isArray(t)){if(0===t.length)return this.error('Expected an array with at least one element. If you wanted a literal array, use ["literal", []].');const n=t[0];if("string"!=typeof n)return this.error(`Expression name must be a string, but found ${typeof n} instead. If you wanted a literal array, use ["literal", [...]].`,0),null;const i=this.registry[n];if(i){let n=i.parse(t,this);if(!n)return null;if(this.expectedType){const t=this.expectedType,i=n.type;if("string"!==t.kind&&"number"!==t.kind&&"boolean"!==t.kind&&"object"!==t.kind&&"array"!==t.kind||"value"!==i.kind)if("color"!==t.kind&&"formatted"!==t.kind&&"resolvedImage"!==t.kind||"value"!==i.kind&&"string"!==i.kind){if(this.checkSubtype(t,i))return null}else n=r(n,t,e.typeAnnotation||"coerce");else n=r(n,t,e.typeAnnotation||"assert")}if(!(n instanceof at)&&"resolvedImage"!==n.type.kind&&Bt(n)){const t=new gt;try{n=new at(n.type,n.evaluate(t))}catch(t){return this.error(t.message),null}}return n}return this.error(`Unknown expression "${n}". If you wanted a literal array, use ["literal", [...]].`,0)}return void 0===t?this.error("'undefined' value invalid. Use null instead."):"object"==typeof t?this.error('Bare objects invalid. Use ["literal", {...}] instead.'):this.error(`Expected an array, but found ${typeof t} instead.`)}concat(t,e,r){const n="number"==typeof t?this.path.concat(t):this.path,i=r?this.scope.concat(r):this.scope;return new Ut(this.registry,n,e||null,i,this.errors)}error(t,...e){const r=`${this.key}${e.map(t=>`[${t}]`).join("")}`;this.errors.push(new M(r,t))}checkSubtype(t,e){const r=X(t,e);return r&&this.error(r),r}}function Bt(t){if(t instanceof Gt)return Bt(t.boundExpression);if(t instanceof yt&&"error"===t.name)return!1;if(t instanceof mt)return!1;if(t instanceof kt)return!1;const e=t instanceof pt||t instanceof ut;let r=!0;return t.eachChild(t=>{r=e?r&&Bt(t):r&&t instanceof at}),!!r&&(jt(t)&&Dt(t,["zoom","heatmap-density","line-progress","sky-radial-progress","accumulated","is-supported-script","pitch","distance-from-center"]))}function zt(t,e){const r=t.length-1;let n,i,o=0,a=r,s=0;for(;o<=a;)if(s=Math.floor((o+a)/2),n=t[s],i=t[s+1],n<=e){if(s===r||ee))throw new st("Input is not a number.");a=s-1}return 0}class Vt{constructor(t,e,r){this.type=t,this.input=e,this.labels=[],this.outputs=[];for(const[t,e]of r)this.labels.push(t),this.outputs.push(e)}static parse(t,e){if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");const r=e.parse(t[1],1,k);if(!r)return null;const n=[];let i=null;e.expectedType&&"value"!==e.expectedType.kind&&(i=e.expectedType);for(let r=1;r=o)return e.error('Input/output pairs for "step" expressions must be arranged with input values in strictly ascending order.',s);const u=e.parse(a,l,i);if(!u)return null;i=i||u.type,n.push([o,u])}return new Vt(i,r,n)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);return r[zt(e,n)].evaluate(t)}eachChild(t){t(this.input);for(const e of this.outputs)t(e)}outputDefined(){return this.outputs.every(t=>t.outputDefined())}serialize(){const t=["step",this.input.serialize()];for(let e=0;e0&&t.push(this.labels[e]),t.push(this.outputs[e].serialize());return t}}var qt=Yt;function Yt(t,e,r,n){this.cx=3*t,this.bx=3*(r-t)-this.cx,this.ax=1-this.cx-this.bx,this.cy=3*e,this.by=3*(n-e)-this.cy,this.ay=1-this.cy-this.by,this.p1x=t,this.p1y=n,this.p2x=r,this.p2y=n}function Wt(t,e,r){return t*(1-r)+e*r}Yt.prototype.sampleCurveX=function(t){return((this.ax*t+this.bx)*t+this.cx)*t},Yt.prototype.sampleCurveY=function(t){return((this.ay*t+this.by)*t+this.cy)*t},Yt.prototype.sampleCurveDerivativeX=function(t){return(3*this.ax*t+2*this.bx)*t+this.cx},Yt.prototype.solveCurveX=function(t,e){var r,n,i,o,a;for(void 0===e&&(e=1e-6),i=t,a=0;a<8;a++){if(o=this.sampleCurveX(i)-t,Math.abs(o)(n=1))return n;for(;ro?r=i:n=i,i=.5*(n-r)+r}return i},Yt.prototype.solve=function(t,e){return this.sampleCurveY(this.solveCurveX(t,e))};var Xt=Object.freeze({__proto__:null,number:Wt,color:function(t,e,r){return new J(Wt(t.r,e.r,r),Wt(t.g,e.g,r),Wt(t.b,e.b,r),Wt(t.a,e.a,r))},array:function(t,e,r){return t.map((t,n)=>Wt(t,e[n],r))}});const Ht=.95047,Zt=1.08883,Kt=4/29,Jt=6/29,$t=3*Jt*Jt,Qt=Math.PI/180,te=180/Math.PI;function ee(t){return t>.008856451679035631?Math.pow(t,1/3):t/$t+Kt}function re(t){return t>Jt?t*t*t:$t*(t-Kt)}function ne(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function ie(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function oe(t){const e=ie(t.r),r=ie(t.g),n=ie(t.b),i=ee((.4124564*e+.3575761*r+.1804375*n)/Ht),o=ee((.2126729*e+.7151522*r+.072175*n)/1);return{l:116*o-16,a:500*(i-o),b:200*(o-ee((.0193339*e+.119192*r+.9503041*n)/Zt)),alpha:t.a}}function ae(t){let e=(t.l+16)/116,r=isNaN(t.a)?e:e+t.a/500,n=isNaN(t.b)?e:e-t.b/200;return e=1*re(e),r=Ht*re(r),n=Zt*re(n),new J(ne(3.2404542*r-1.5371385*e-.4985314*n),ne(-.969266*r+1.8760108*e+.041556*n),ne(.0556434*r-.2040259*e+1.0572252*n),t.alpha)}function se(t,e,r){const n=e-t;return t+r*(n>180||n<-180?n-360*Math.round(n/360):n)}const le={forward:oe,reverse:ae,interpolate:function(t,e,r){return{l:Wt(t.l,e.l,r),a:Wt(t.a,e.a,r),b:Wt(t.b,e.b,r),alpha:Wt(t.alpha,e.alpha,r)}}},ue={forward:function(t){const{l:e,a:r,b:n}=oe(t),i=Math.atan2(n,r)*te;return{h:i<0?i+360:i,c:Math.sqrt(r*r+n*n),l:e,alpha:t.a}},reverse:function(t){const e=t.h*Qt,r=t.c;return ae({l:t.l,a:Math.cos(e)*r,b:Math.sin(e)*r,alpha:t.alpha})},interpolate:function(t,e,r){return{h:se(t.h,e.h,r),c:Wt(t.c,e.c,r),l:Wt(t.l,e.l,r),alpha:Wt(t.alpha,e.alpha,r)}}};var ce=Object.freeze({__proto__:null,lab:le,hcl:ue});class he{constructor(t,e,r,n,i){this.type=t,this.operator=e,this.interpolation=r,this.input=n,this.labels=[],this.outputs=[];for(const[t,e]of i)this.labels.push(t),this.outputs.push(e)}static interpolationFactor(t,e,r,n){let i=0;if("exponential"===t.name)i=fe(e,t.base,r,n);else if("linear"===t.name)i=fe(e,1,r,n);else if("cubic-bezier"===t.name){const o=t.controlPoints;i=new qt(o[0],o[1],o[2],o[3]).solve(fe(e,1,r,n))}return i}static parse(t,e){let[r,n,i,...o]=t;if(!Array.isArray(n)||0===n.length)return e.error("Expected an interpolation type expression.",1);if("linear"===n[0])n={name:"linear"};else if("exponential"===n[0]){const t=n[1];if("number"!=typeof t)return e.error("Exponential interpolation requires a numeric base.",1,1);n={name:"exponential",base:t}}else{if("cubic-bezier"!==n[0])return e.error("Unknown interpolation type "+String(n[0]),1,0);{const t=n.slice(1);if(4!==t.length||t.some(t=>"number"!=typeof t||t<0||t>1))return e.error("Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.",1);n={name:"cubic-bezier",controlPoints:t}}}if(t.length-1<4)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if((t.length-1)%2!=0)return e.error("Expected an even number of arguments.");if(i=e.parse(i,2,k),!i)return null;const a=[];let s=null;"interpolate-hcl"===r||"interpolate-lab"===r?s=D:e.expectedType&&"value"!==e.expectedType.kind&&(s=e.expectedType);for(let t=0;t=r)return e.error('Input/output pairs for "interpolate" expressions must be arranged with input values in strictly ascending order.',i);const u=e.parse(n,l,s);if(!u)return null;s=s||u.type,a.push([r,u])}return"number"===s.kind||"color"===s.kind||"array"===s.kind&&"number"===s.itemType.kind&&"number"==typeof s.N?new he(s,r,n,i,a):e.error(`Type ${Y(s)} is not interpolatable.`)}evaluate(t){const e=this.labels,r=this.outputs;if(1===e.length)return r[0].evaluate(t);const n=this.input.evaluate(t);if(n<=e[0])return r[0].evaluate(t);const i=e.length;if(n>=e[i-1])return r[i-1].evaluate(t);const o=zt(e,n),a=e[o],s=e[o+1],l=he.interpolationFactor(this.interpolation,n,a,s),u=r[o].evaluate(t),c=r[o+1].evaluate(t);return"interpolate"===this.operator?Xt[this.type.kind.toLowerCase()](u,c,l):"interpolate-hcl"===this.operator?ue.reverse(ue.interpolate(ue.forward(u),ue.forward(c),l)):le.reverse(le.interpolate(le.forward(u),le.forward(c),l))}eachChild(t){t(this.input);for(const e of this.outputs)t(e)}outputDefined(){return this.outputs.every(t=>t.outputDefined())}serialize(){let t;t="linear"===this.interpolation.name?["linear"]:"exponential"===this.interpolation.name?1===this.interpolation.base?["linear"]:["exponential",this.interpolation.base]:["cubic-bezier"].concat(this.interpolation.controlPoints);const e=[this.operator,t,this.input.serialize()];for(let t=0;tX(n,t.type));return new pe(o?U:r,i)}evaluate(t){let e,r=null,n=0;for(const i of this.args){if(n++,r=i.evaluate(t),r&&r instanceof et&&!r.available&&(e||(e=r),r=null,n===this.args.length))return e;if(null!==r)break}return r}eachChild(t){this.args.forEach(t)}outputDefined(){return this.args.every(t=>t.outputDefined())}serialize(){const t=["coalesce"];return this.eachChild(e=>{t.push(e.serialize())}),t}}class de{constructor(t,e){this.type=e.type,this.bindings=[].concat(t),this.result=e}evaluate(t){return this.result.evaluate(t)}eachChild(t){for(const e of this.bindings)t(e[1]);t(this.result)}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found ${t.length-1} instead.`);const r=[];for(let n=1;n=r.length)throw new st(`Array index out of bounds: ${e} > ${r.length-1}.`);if(e!==Math.floor(e))throw new st(`Array index must be an integer, but found ${e} instead.`);return r[e]}eachChild(t){t(this.index),t(this.input)}outputDefined(){return!1}serialize(){return["at",this.index.serialize(),this.input.serialize()]}}class ye{constructor(t,e){this.type=F,this.needle=t,this.haystack=e}static parse(t,e){if(3!==t.length)return e.error(`Expected 2 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,U),n=e.parse(t[2],2,U);return r&&n?H(r.type,[F,j,k,A,U])?new ye(r,n):e.error(`Expected first argument to be of type boolean, string, number or null, but found ${Y(r.type)} instead`):null}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(null==r)return!1;if(!Z(e,["boolean","string","number","null"]))throw new st(`Expected first argument to be of type boolean, string, number or null, but found ${Y(it(e))} instead.`);if(!Z(r,["string","array"]))throw new st(`Expected second argument to be of type array or string, but found ${Y(it(r))} instead.`);return r.indexOf(e)>=0}eachChild(t){t(this.needle),t(this.haystack)}outputDefined(){return!0}serialize(){return["in",this.needle.serialize(),this.haystack.serialize()]}}class me{constructor(t,e,r){this.type=k,this.needle=t,this.haystack=e,this.fromIndex=r}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,U),n=e.parse(t[2],2,U);if(!r||!n)return null;if(!H(r.type,[F,j,k,A,U]))return e.error(`Expected first argument to be of type boolean, string, number or null, but found ${Y(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,k);return i?new me(r,n,i):null}return new me(r,n)}evaluate(t){const e=this.needle.evaluate(t),r=this.haystack.evaluate(t);if(!Z(e,["boolean","string","number","null"]))throw new st(`Expected first argument to be of type boolean, string, number or null, but found ${Y(it(e))} instead.`);if(!Z(r,["string","array"]))throw new st(`Expected second argument to be of type array or string, but found ${Y(it(r))} instead.`);if(this.fromIndex){const n=this.fromIndex.evaluate(t);return r.indexOf(e,n)}return r.indexOf(e)}eachChild(t){t(this.needle),t(this.haystack),this.fromIndex&&t(this.fromIndex)}outputDefined(){return!1}serialize(){if(null!=this.fromIndex&&void 0!==this.fromIndex){const t=this.fromIndex.serialize();return["index-of",this.needle.serialize(),this.haystack.serialize(),t]}return["index-of",this.needle.serialize(),this.haystack.serialize()]}}class _e{constructor(t,e,r,n,i,o){this.inputType=t,this.type=e,this.input=r,this.cases=n,this.outputs=i,this.otherwise=o}static parse(t,e){if(t.length<5)return e.error(`Expected at least 4 arguments, but found only ${t.length-1}.`);if(t.length%2!=1)return e.error("Expected an even number of arguments.");let r,n;e.expectedType&&"value"!==e.expectedType.kind&&(n=e.expectedType);const i={},o=[];for(let a=2;aNumber.MAX_SAFE_INTEGER)return u.error(`Branch labels must be integers no larger than ${Number.MAX_SAFE_INTEGER}.`);if("number"==typeof t&&Math.floor(t)!==t)return u.error("Numeric branch labels must be integer values.");if(r){if(u.checkSubtype(r,it(t)))return null}else r=it(t);if(void 0!==i[String(t)])return u.error("Branch labels must be unique.");i[String(t)]=o.length}const c=e.parse(l,a,n);if(!c)return null;n=n||c.type,o.push(c)}const a=e.parse(t[1],1,U);if(!a)return null;const s=e.parse(t[t.length-1],t.length-1,n);return s?"value"!==a.type.kind&&e.concat(1).checkSubtype(r,a.type)?null:new _e(r,n,a,i,o,s):null}evaluate(t){const e=this.input.evaluate(t);return(it(e)===this.inputType&&this.outputs[this.cases[e]]||this.otherwise).evaluate(t)}eachChild(t){t(this.input),this.outputs.forEach(t),t(this.otherwise)}outputDefined(){return this.outputs.every(t=>t.outputDefined())&&this.otherwise.outputDefined()}serialize(){const t=["match",this.input.serialize()],e=Object.keys(this.cases).sort(),r=[],n={};for(const t of e){const e=n[this.cases[t]];void 0===e?(n[this.cases[t]]=r.length,r.push([this.cases[t],[t]])):r[e][1].push(t)}const i=t=>"number"===this.inputType.kind?Number(t):t;for(const[e,n]of r)1===n.length?t.push(i(n[0])):t.push(n.map(i)),t.push(this.outputs[e].serialize());return t.push(this.otherwise.serialize()),t}}class ve{constructor(t,e,r){this.type=t,this.branches=e,this.otherwise=r}static parse(t,e){if(t.length<4)return e.error(`Expected at least 3 arguments, but found only ${t.length-1}.`);if(t.length%2!=0)return e.error("Expected an odd number of arguments.");let r;e.expectedType&&"value"!==e.expectedType.kind&&(r=e.expectedType);const n=[];for(let i=1;ie.outputDefined())&&this.otherwise.outputDefined()}serialize(){const t=["case"];return this.eachChild(e=>{t.push(e.serialize())}),t}}class be{constructor(t,e,r,n){this.type=t,this.input=e,this.beginIndex=r,this.endIndex=n}static parse(t,e){if(t.length<=2||t.length>=5)return e.error(`Expected 3 or 4 arguments, but found ${t.length-1} instead.`);const r=e.parse(t[1],1,U),n=e.parse(t[2],2,k);if(!r||!n)return null;if(!H(r.type,[q(U),j,U]))return e.error(`Expected first argument to be of type array or string, but found ${Y(r.type)} instead`);if(4===t.length){const i=e.parse(t[3],3,k);return i?new be(r.type,r,n,i):null}return new be(r.type,r,n)}evaluate(t){const e=this.input.evaluate(t),r=this.beginIndex.evaluate(t);if(!Z(e,["string","array"]))throw new st(`Expected first argument to be of type array or string, but found ${Y(it(e))} instead.`);if(this.endIndex){const n=this.endIndex.evaluate(t);return e.slice(r,n)}return e.slice(r)}eachChild(t){t(this.input),t(this.beginIndex),this.endIndex&&t(this.endIndex)}outputDefined(){return!1}serialize(){if(null!=this.endIndex&&void 0!==this.endIndex){const t=this.endIndex.serialize();return["slice",this.input.serialize(),this.beginIndex.serialize(),t]}return["slice",this.input.serialize(),this.beginIndex.serialize()]}}function xe(t,e){return"=="===t||"!="===t?"boolean"===e.kind||"string"===e.kind||"number"===e.kind||"null"===e.kind||"value"===e.kind:"string"===e.kind||"number"===e.kind||"value"===e.kind}function we(t,e,r,n){return 0===n.compare(e,r)}function Ee(t,e,r){const n="=="!==t&&"!="!==t;return class i{constructor(t,e,r){this.type=F,this.lhs=t,this.rhs=e,this.collator=r,this.hasUntypedArgument="value"===t.type.kind||"value"===e.type.kind}static parse(t,e){if(3!==t.length&&4!==t.length)return e.error("Expected two or three arguments.");const r=t[0];let o=e.parse(t[1],1,U);if(!o)return null;if(!xe(r,o.type))return e.concat(1).error(`"${r}" comparisons are not supported for type '${Y(o.type)}'.`);let a=e.parse(t[2],2,U);if(!a)return null;if(!xe(r,a.type))return e.concat(2).error(`"${r}" comparisons are not supported for type '${Y(a.type)}'.`);if(o.type.kind!==a.type.kind&&"value"!==o.type.kind&&"value"!==a.type.kind)return e.error(`Cannot compare types '${Y(o.type)}' and '${Y(a.type)}'.`);n&&("value"===o.type.kind&&"value"!==a.type.kind?o=new ut(a.type,[o]):"value"!==o.type.kind&&"value"===a.type.kind&&(a=new ut(o.type,[a])));let s=null;if(4===t.length){if("string"!==o.type.kind&&"string"!==a.type.kind&&"value"!==o.type.kind&&"value"!==a.type.kind)return e.error("Cannot use collator to compare non-string types.");if(s=e.parse(t[3],3,B),!s)return null}return new i(o,a,s)}evaluate(i){const o=this.lhs.evaluate(i),a=this.rhs.evaluate(i);if(n&&this.hasUntypedArgument){const e=it(o),r=it(a);if(e.kind!==r.kind||"string"!==e.kind&&"number"!==e.kind)throw new st(`Expected arguments for "${t}" to be (string, string) or (number, number), but found (${e.kind}, ${r.kind}) instead.`)}if(this.collator&&!n&&this.hasUntypedArgument){const t=it(o),r=it(a);if("string"!==t.kind||"string"!==r.kind)return e(i,o,a)}return this.collator?r(i,o,a,this.collator.evaluate(i)):e(i,o,a)}eachChild(t){t(this.lhs),t(this.rhs),this.collator&&t(this.collator)}outputDefined(){return!0}serialize(){const e=[t];return this.eachChild(t=>{e.push(t.serialize())}),e}}}const Oe=Ee("==",(function(t,e,r){return e===r}),we),Se=Ee("!=",(function(t,e,r){return e!==r}),(function(t,e,r,n){return!we(0,e,r,n)})),Ie=Ee("<",(function(t,e,r){return e",(function(t,e,r){return e>r}),(function(t,e,r,n){return n.compare(e,r)>0})),Te=Ee("<=",(function(t,e,r){return e<=r}),(function(t,e,r,n){return n.compare(e,r)<=0})),Pe=Ee(">=",(function(t,e,r){return e>=r}),(function(t,e,r,n){return n.compare(e,r)>=0}));class Re{constructor(t,e,r,n,i){this.type=j,this.number=t,this.locale=e,this.currency=r,this.minFractionDigits=n,this.maxFractionDigits=i}static parse(t,e){if(3!==t.length)return e.error("Expected two arguments.");const r=e.parse(t[1],1,k);if(!r)return null;const n=t[2];if("object"!=typeof n||Array.isArray(n))return e.error("NumberFormat options argument must be an object.");let i=null;if(n.locale&&(i=e.parse(n.locale,1,j),!i))return null;let o=null;if(n.currency&&(o=e.parse(n.currency,1,j),!o))return null;let a=null;if(n["min-fraction-digits"]&&(a=e.parse(n["min-fraction-digits"],1,k),!a))return null;let s=null;return n["max-fraction-digits"]&&(s=e.parse(n["max-fraction-digits"],1,k),!s)?null:new Re(r,i,o,a,s)}evaluate(t){return new Intl.NumberFormat(this.locale?this.locale.evaluate(t):[],{style:this.currency?"currency":"decimal",currency:this.currency?this.currency.evaluate(t):void 0,minimumFractionDigits:this.minFractionDigits?this.minFractionDigits.evaluate(t):void 0,maximumFractionDigits:this.maxFractionDigits?this.maxFractionDigits.evaluate(t):void 0}).format(this.number.evaluate(t))}eachChild(t){t(this.number),this.locale&&t(this.locale),this.currency&&t(this.currency),this.minFractionDigits&&t(this.minFractionDigits),this.maxFractionDigits&&t(this.maxFractionDigits)}outputDefined(){return!1}serialize(){const t={};return this.locale&&(t.locale=this.locale.serialize()),this.currency&&(t.currency=this.currency.serialize()),this.minFractionDigits&&(t["min-fraction-digits"]=this.minFractionDigits.serialize()),this.maxFractionDigits&&(t["max-fraction-digits"]=this.maxFractionDigits.serialize()),["number-format",this.number.serialize(),t]}}class Le{constructor(t){this.type=k,this.input=t}static parse(t,e){if(2!==t.length)return e.error(`Expected 1 argument, but found ${t.length-1} instead.`);const r=e.parse(t[1],1);return r?"array"!==r.type.kind&&"string"!==r.type.kind&&"value"!==r.type.kind?e.error(`Expected argument of type string or array, but found ${Y(r.type)} instead.`):new Le(r):null}evaluate(t){const e=this.input.evaluate(t);if("string"==typeof e)return e.length;if(Array.isArray(e))return e.length;throw new st(`Expected value to be of type string or array, but found ${Y(it(e))} instead.`)}eachChild(t){t(this.input)}outputDefined(){return!1}serialize(){const t=["length"];return this.eachChild(e=>{t.push(e.serialize())}),t}}const Me={"==":Oe,"!=":Se,">":Ce,"<":Ie,">=":Pe,"<=":Te,array:ut,at:ge,boolean:ut,case:ve,coalesce:pe,collator:mt,format:ct,image:ht,in:ye,"index-of":me,interpolate:he,"interpolate-hcl":he,"interpolate-lab":he,length:Le,let:de,literal:at,match:_e,number:ut,"number-format":Re,object:ut,slice:be,step:Vt,string:ut,"to-boolean":pt,"to-color":pt,"to-number":pt,"to-string":pt,var:Gt,within:kt};function Ne(t,[e,r,n,i]){e=e.evaluate(t),r=r.evaluate(t),n=n.evaluate(t);const o=i?i.evaluate(t):1,a=rt(e,r,n,o);if(a)throw new st(a);return new J(e/255*o,r/255*o,n/255*o,o)}function Ae(t,e){return t in e}function ke(t,e){const r=e[t];return void 0===r?null:r}function je(t){return{type:t}}function Fe(t){return{result:"success",value:t}}function De(t){return{result:"error",value:t}}function Ge(t){return"data-driven"===t["property-type"]||"cross-faded-data-driven"===t["property-type"]}function Ue(t){return!!t.expression&&t.expression.parameters.indexOf("zoom")>-1}function Be(t){return!!t.expression&&t.expression.interpolated}function ze(t){return t instanceof Number?"number":t instanceof String?"string":t instanceof Boolean?"boolean":Array.isArray(t)?"array":null===t?"null":typeof t}function Ve(t){return"object"==typeof t&&null!==t&&!Array.isArray(t)}function qe(t){return t}function Ye(t,e){const r="color"===e.type,n=t.stops&&"object"==typeof t.stops[0][0],i=n||void 0!==t.property,o=n||!i,a=t.type||(Be(e)?"exponential":"interval");if(r&&((t=L({},t)).stops&&(t.stops=t.stops.map(t=>[t[0],J.parse(t[1])])),t.default?t.default=J.parse(t.default):t.default=J.parse(e.default)),t.colorSpace&&"rgb"!==t.colorSpace&&!ce[t.colorSpace])throw new Error("Unknown color space: "+t.colorSpace);let s,l,u;if("exponential"===a)s=Ze;else if("interval"===a)s=He;else if("categorical"===a){s=Xe,l=Object.create(null);for(const e of t.stops)l[e[0]]=e[1];u=typeof t.stops[0][0]}else{if("identity"!==a)throw new Error(`Unknown function type "${a}"`);s=Ke}if(n){const r={},n=[];for(let e=0;et[0]),evaluate:({zoom:r},n)=>Ze({stops:i,base:t.base},e,r).evaluate(r,n)}}if(o){const r="exponential"===a?{name:"exponential",base:void 0!==t.base?t.base:1}:null;return{kind:"camera",interpolationType:r,interpolationFactor:he.interpolationFactor.bind(void 0,r),zoomStops:t.stops.map(t=>t[0]),evaluate:({zoom:r})=>s(t,e,r,l,u)}}return{kind:"source",evaluate(r,n){const i=n&&n.properties?n.properties[t.property]:void 0;return void 0===i?We(t.default,e.default):s(t,e,i,l,u)}}}function We(t,e,r){return void 0!==t?t:void 0!==e?e:void 0!==r?r:void 0}function Xe(t,e,r,n,i){return We(typeof r===i?n[r]:void 0,t.default,e.default)}function He(t,e,r){if("number"!==ze(r))return We(t.default,e.default);const n=t.stops.length;if(1===n)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[n-1][0])return t.stops[n-1][1];const i=zt(t.stops.map(t=>t[0]),r);return t.stops[i][1]}function Ze(t,e,r){const n=void 0!==t.base?t.base:1;if("number"!==ze(r))return We(t.default,e.default);const i=t.stops.length;if(1===i)return t.stops[0][1];if(r<=t.stops[0][0])return t.stops[0][1];if(r>=t.stops[i-1][0])return t.stops[i-1][1];const o=zt(t.stops.map(t=>t[0]),r),a=function(t,e,r,n){const i=n-r,o=t-r;return 0===i?0:1===e?o/i:(Math.pow(e,o)-1)/(Math.pow(e,i)-1)}(r,n,t.stops[o][0],t.stops[o+1][0]),s=t.stops[o][1],l=t.stops[o+1][1];let u=Xt[e.type]||qe;if(t.colorSpace&&"rgb"!==t.colorSpace){const e=ce[t.colorSpace];u=(t,r)=>e.reverse(e.interpolate(e.forward(t),e.forward(r),a))}return"function"==typeof s.evaluate?{evaluate(...t){const e=s.evaluate.apply(void 0,t),r=l.evaluate.apply(void 0,t);if(void 0!==e&&void 0!==r)return u(e,r,a)}}:u(s,l,a)}function Ke(t,e,r){return"color"===e.type?r=J.parse(r):"formatted"===e.type?r=tt.fromString(r.toString()):"resolvedImage"===e.type?r=et.fromString(r.toString()):ze(r)===e.type||"enum"===e.type&&e.values[r]||(r=void 0),We(r,t.default,e.default)}yt.register(Me,{error:[{kind:"error"},[j],(t,[e])=>{throw new st(e.evaluate(t))}],typeof:[j,[U],(t,[e])=>Y(it(e.evaluate(t)))],"to-rgba":[q(k,4),[D],(t,[e])=>e.evaluate(t).toArray()],rgb:[D,[k,k,k],Ne],rgba:[D,[k,k,k,k],Ne],has:{type:F,overloads:[[[j],(t,[e])=>Ae(e.evaluate(t),t.properties())],[[j,G],(t,[e,r])=>Ae(e.evaluate(t),r.evaluate(t))]]},get:{type:U,overloads:[[[j],(t,[e])=>ke(e.evaluate(t),t.properties())],[[j,G],(t,[e,r])=>ke(e.evaluate(t),r.evaluate(t))]]},"feature-state":[U,[j],(t,[e])=>ke(e.evaluate(t),t.featureState||{})],properties:[G,[],t=>t.properties()],"geometry-type":[j,[],t=>t.geometryType()],id:[U,[],t=>t.id()],zoom:[k,[],t=>t.globals.zoom],pitch:[k,[],t=>t.globals.pitch||0],"distance-from-center":[k,[],t=>t.distanceFromCenter()],"heatmap-density":[k,[],t=>t.globals.heatmapDensity||0],"line-progress":[k,[],t=>t.globals.lineProgress||0],"sky-radial-progress":[k,[],t=>t.globals.skyRadialProgress||0],accumulated:[U,[],t=>void 0===t.globals.accumulated?null:t.globals.accumulated],"+":[k,je(k),(t,e)=>{let r=0;for(const n of e)r+=n.evaluate(t);return r}],"*":[k,je(k),(t,e)=>{let r=1;for(const n of e)r*=n.evaluate(t);return r}],"-":{type:k,overloads:[[[k,k],(t,[e,r])=>e.evaluate(t)-r.evaluate(t)],[[k],(t,[e])=>-e.evaluate(t)]]},"/":[k,[k,k],(t,[e,r])=>e.evaluate(t)/r.evaluate(t)],"%":[k,[k,k],(t,[e,r])=>e.evaluate(t)%r.evaluate(t)],ln2:[k,[],()=>Math.LN2],pi:[k,[],()=>Math.PI],e:[k,[],()=>Math.E],"^":[k,[k,k],(t,[e,r])=>Math.pow(e.evaluate(t),r.evaluate(t))],sqrt:[k,[k],(t,[e])=>Math.sqrt(e.evaluate(t))],log10:[k,[k],(t,[e])=>Math.log(e.evaluate(t))/Math.LN10],ln:[k,[k],(t,[e])=>Math.log(e.evaluate(t))],log2:[k,[k],(t,[e])=>Math.log(e.evaluate(t))/Math.LN2],sin:[k,[k],(t,[e])=>Math.sin(e.evaluate(t))],cos:[k,[k],(t,[e])=>Math.cos(e.evaluate(t))],tan:[k,[k],(t,[e])=>Math.tan(e.evaluate(t))],asin:[k,[k],(t,[e])=>Math.asin(e.evaluate(t))],acos:[k,[k],(t,[e])=>Math.acos(e.evaluate(t))],atan:[k,[k],(t,[e])=>Math.atan(e.evaluate(t))],min:[k,je(k),(t,e)=>Math.min(...e.map(e=>e.evaluate(t)))],max:[k,je(k),(t,e)=>Math.max(...e.map(e=>e.evaluate(t)))],abs:[k,[k],(t,[e])=>Math.abs(e.evaluate(t))],round:[k,[k],(t,[e])=>{const r=e.evaluate(t);return r<0?-Math.round(-r):Math.round(r)}],floor:[k,[k],(t,[e])=>Math.floor(e.evaluate(t))],ceil:[k,[k],(t,[e])=>Math.ceil(e.evaluate(t))],"filter-==":[F,[j,U],(t,[e,r])=>t.properties()[e.value]===r.value],"filter-id-==":[F,[U],(t,[e])=>t.id()===e.value],"filter-type-==":[F,[j],(t,[e])=>t.geometryType()===e.value],"filter-<":[F,[j,U],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n{const r=t.id(),n=e.value;return typeof r==typeof n&&r":[F,[j,U],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>i}],"filter-id->":[F,[U],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>n}],"filter-<=":[F,[j,U],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n<=i}],"filter-id-<=":[F,[U],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r<=n}],"filter->=":[F,[j,U],(t,[e,r])=>{const n=t.properties()[e.value],i=r.value;return typeof n==typeof i&&n>=i}],"filter-id->=":[F,[U],(t,[e])=>{const r=t.id(),n=e.value;return typeof r==typeof n&&r>=n}],"filter-has":[F,[U],(t,[e])=>e.value in t.properties()],"filter-has-id":[F,[],t=>null!==t.id()&&void 0!==t.id()],"filter-type-in":[F,[q(j)],(t,[e])=>e.value.indexOf(t.geometryType())>=0],"filter-id-in":[F,[q(U)],(t,[e])=>e.value.indexOf(t.id())>=0],"filter-in-small":[F,[j,q(U)],(t,[e,r])=>r.value.indexOf(t.properties()[e.value])>=0],"filter-in-large":[F,[j,q(U)],(t,[e,r])=>function(t,e,r,n){for(;r<=n;){const i=r+n>>1;if(e[i]===t)return!0;e[i]>t?n=i-1:r=i+1}return!1}(t.properties()[e.value],r.value,0,r.value.length-1)],all:{type:F,overloads:[[[F,F],(t,[e,r])=>e.evaluate(t)&&r.evaluate(t)],[je(F),(t,e)=>{for(const r of e)if(!r.evaluate(t))return!1;return!0}]]},any:{type:F,overloads:[[[F,F],(t,[e,r])=>e.evaluate(t)||r.evaluate(t)],[je(F),(t,e)=>{for(const r of e)if(r.evaluate(t))return!0;return!1}]]},"!":[F,[F],(t,[e])=>!e.evaluate(t)],"is-supported-script":[F,[j],(t,[e])=>{const r=t.globals&&t.globals.isSupportedScript;return!r||r(e.evaluate(t))}],upcase:[j,[j],(t,[e])=>e.evaluate(t).toUpperCase()],downcase:[j,[j],(t,[e])=>e.evaluate(t).toLowerCase()],concat:[j,je(U),(t,e)=>e.map(e=>ot(e.evaluate(t))).join("")],"resolved-locale":[j,[B],(t,[e])=>e.evaluate(t).resolvedLocale()]});class Je{constructor(t,e){var r;this.expression=t,this._warningHistory={},this._evaluator=new gt,this._defaultValue=e?"color"===(r=e).type&&Ve(r.default)?new J(0,0,0,0):"color"===r.type?J.parse(r.default)||null:void 0===r.default?null:r.default:null,this._enumValues=e&&"enum"===e.type?e.values:null}evaluateWithoutErrorHandling(t,e,r,n,i,o,a,s){return this._evaluator.globals=t,this._evaluator.feature=e,this._evaluator.featureState=r,this._evaluator.canonical=n||null,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=o,this._evaluator.featureTileCoord=a||null,this._evaluator.featureDistanceData=s||null,this.expression.evaluate(this._evaluator)}evaluate(t,e,r,n,i,o,a,s){this._evaluator.globals=t,this._evaluator.feature=e||null,this._evaluator.featureState=r||null,this._evaluator.canonical=n||null,this._evaluator.availableImages=i||null,this._evaluator.formattedSection=o||null,this._evaluator.featureTileCoord=a||null,this._evaluator.featureDistanceData=s||null;try{const t=this.expression.evaluate(this._evaluator);if(null==t||"number"==typeof t&&t!=t)return this._defaultValue;if(this._enumValues&&!(t in this._enumValues))throw new st(`Expected value to be one of ${Object.keys(this._enumValues).map(t=>JSON.stringify(t)).join(", ")}, but found ${JSON.stringify(t)} instead.`);return t}catch(t){return this._warningHistory[t.message]||(this._warningHistory[t.message]=!0,"undefined"!=typeof console&&console.warn(t.message)),this._defaultValue}}}function $e(t){return Array.isArray(t)&&t.length>0&&"string"==typeof t[0]&&t[0]in Me}function Qe(t,e){const r=new Ut(Me,[],e?function(t){const e={color:D,string:j,number:k,enum:j,boolean:F,formatted:z,resolvedImage:V};if("array"===t.type)return q(e[t.value]||U,t.length);return e[t.type]}(e):void 0),n=r.parse(t,void 0,void 0,void 0,e&&"string"===e.type?{typeAnnotation:"coerce"}:void 0);return n?Fe(new Je(n,e)):De(r.errors)}class tr{constructor(t,e){this.kind=t,this._styleExpression=e,this.isStateDependent="constant"!==t&&!Ft(e.expression)}evaluateWithoutErrorHandling(t,e,r,n,i,o){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,o)}evaluate(t,e,r,n,i,o){return this._styleExpression.evaluate(t,e,r,n,i,o)}}class er{constructor(t,e,r,n){this.kind=t,this.zoomStops=r,this._styleExpression=e,this.isStateDependent="camera"!==t&&!Ft(e.expression),this.interpolationType=n}evaluateWithoutErrorHandling(t,e,r,n,i,o){return this._styleExpression.evaluateWithoutErrorHandling(t,e,r,n,i,o)}evaluate(t,e,r,n,i,o){return this._styleExpression.evaluate(t,e,r,n,i,o)}interpolationFactor(t,e,r){return this.interpolationType?he.interpolationFactor(this.interpolationType,t,e,r):0}}function rr(t,e){if("error"===(t=Qe(t,e)).result)return t;const r=t.value.expression,n=jt(r);if(!n&&!Ge(e))return De([new M("","data expressions not supported")]);const i=Dt(r,["zoom","pitch","distance-from-center"]);if(!i&&!Ue(e))return De([new M("","zoom expressions not supported")]);const o=ir(r);if(!o&&!i)return De([new M("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.')]);if(o instanceof M)return De([o]);if(o instanceof he&&!Be(e))return De([new M("",'"interpolate" expressions cannot be used with this property')]);if(!o)return Fe(new tr(n?"constant":"source",t.value));const a=o instanceof he?o.interpolation:void 0;return Fe(new er(n?"camera":"composite",t.value,o.labels,a))}class nr{constructor(t,e){this._parameters=t,this._specification=e,L(this,Ye(this._parameters,this._specification))}static deserialize(t){return new nr(t._parameters,t._specification)}static serialize(t){return{_parameters:t._parameters,_specification:t._specification}}}function ir(t){let e=null;if(t instanceof de)e=ir(t.result);else if(t instanceof pe){for(const r of t.args)if(e=ir(r),e)break}else(t instanceof Vt||t instanceof he)&&t.input instanceof yt&&"zoom"===t.input.name&&(e=t);return e instanceof M||t.eachChild(t=>{const r=ir(t);r instanceof M?e=r:!e&&r?e=new M("",'"zoom" expression may only be used as input to a top-level "step" or "interpolate" expression.'):e&&r&&e!==r&&(e=new M("",'Only one zoom-based "step" or "interpolate" subexpression may be used in an expression.'))}),e}function or(t){return"object"==typeof t?["literal",t]:t}function ar(t,e){let r=t.stops;if(!r)return function(t,e){const r=["get",t.property];if(void 0===t.default)return"string"===e.type?["string",r]:r;if("enum"===e.type)return["match",r,Object.keys(e.values),r,t.default];{const n=["color"===e.type?"to-color":e.type,r,or(t.default)];return"array"===e.type&&n.splice(1,0,e.value,e.length||null),n}}(t,e);const n=r&&"object"==typeof r[0][0],i=n||void 0!==t.property,o=n||!i;return r=r.map(t=>!i&&e.tokens&&"string"==typeof t[1]?[t[0],pr(t[1])]:[t[0],or(t[1])]),n?function(t,e,r){const n={},i={},o=[];for(let e=0;e3&&e===t[t.length-2]||(n&&2===t.length||t.push(e),t.push(r))}function fr(t,e){return t.type?t.type:e.expression.interpolated?"exponential":"interval"}function pr(t){const e=["concat"],r=/{([^{}]+)}/g;let n=0;for(let i=r.exec(t);null!==i;i=r.exec(t)){const o=t.slice(n,r.lastIndex-i[0].length);n=r.lastIndex,o.length>0&&e.push(o),e.push(["get",i[1]])}if(1===e.length)return t;if(n=2&&"$id"!==t[1]&&"$type"!==t[1];case"in":return t.length>=3&&("string"!=typeof t[1]||Array.isArray(t[2]));case"!in":case"!has":case"none":return!1;case"==":case"!=":case">":case">=":case"<":case"<=":return 3!==t.length||Array.isArray(t[1])||Array.isArray(t[2]);case"any":case"all":for(const e of t.slice(1))if(!yr(e)&&"boolean"!=typeof e)return!1;return!0;default:return!0}}function mr(t,e="fill"){if(null==t)return{filter:()=>!0,needGeometry:!1,needFeature:!1};yr(t)||(t=Or(t));const r=t;let n=!0;try{n=function(t){if(!br(t))return t;let e=gr(t);return vr(e),e=_r(e),e}(r)}catch(t){console.warn(`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\nand paste the contents of this message in the report.\nThank you!\nFilter Expression:\n${JSON.stringify(r,null,2)}\n `)}const o=i["filter_"+e],a=Qe(n,o);let s=null;if("error"===a.result)throw new Error(a.value.map(t=>`${t.key}: ${t.message}`).join(", "));s=(t,e,r)=>a.value.evaluate(t,e,{},r);let l=null,u=null;if(n!==r){const t=Qe(r,o);if("error"===t.result)throw new Error(t.value.map(t=>`${t.key}: ${t.message}`).join(", "));l=(e,r,n,i,o)=>t.value.evaluate(e,r,{},n,void 0,void 0,i,o),u=!jt(t.value.expression)}s=s;return{filter:s,dynamicFilter:l||void 0,needGeometry:Er(n),needFeature:!!u}}function _r(t){if(!Array.isArray(t))return t;const e=function(t){if(xr.has(t[0]))for(let e=1;e_r(t))}function vr(t){let e=!1;const r=[];if("case"===t[0]){for(let n=1;n",">=","<","<=","to-boolean"]);function wr(t,e){return te?1:0}function Er(t){if(!Array.isArray(t))return!1;if("within"===t[0])return!0;for(let e=1;e"===e||"<="===e||">="===e?Sr(t[1],t[2],e):"any"===e?(r=t.slice(1),["any"].concat(r.map(Or))):"all"===e?["all"].concat(t.slice(1).map(Or)):"none"===e?["all"].concat(t.slice(1).map(Or).map(Tr)):"in"===e?Ir(t[1],t.slice(2)):"!in"===e?Tr(Ir(t[1],t.slice(2))):"has"===e?Cr(t[1]):"!has"===e?Tr(Cr(t[1])):"within"!==e||t}function Sr(t,e,r){switch(t){case"$type":return["filter-type-"+r,e];case"$id":return["filter-id-"+r,e];default:return["filter-"+r,t,e]}}function Ir(t,e){if(0===e.length)return!1;switch(t){case"$type":return["filter-type-in",["literal",e]];case"$id":return["filter-id-in",["literal",e]];default:return e.length>200&&!e.some(t=>typeof t!=typeof e[0])?["filter-in-large",t,["literal",e.sort(wr)]]:["filter-in-small",t,["literal",e]]}}function Cr(t){switch(t){case"$type":return!0;case"$id":return["filter-has-id"];default:return["filter-has",t]}}function Tr(t){return["!",t]}var Pr=["type","source","source-layer","minzoom","maxzoom","filter","layout"];function Rr(t,e){const r={};for(const e in t)"ref"!==e&&(r[e]=t[e]);return Pr.forEach(t=>{t in e&&(r[t]=e[t])}),r}function Lr(t){t=t.slice();const e=Object.create(null);for(let r=0;ru&&S.push("'"+this.terminals_[w]+"'");C=f.showPosition?"Parse error on line "+(s+1)+":\n"+f.showPosition()+"\nExpecting "+S.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(s+1)+": Unexpected "+(_==c?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:f.match,token:this.terminals_[_]||_,line:f.yylineno,loc:g,expected:S})}if(b[0]instanceof Array&&b.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+_);switch(b[0]){case 1:r.push(_),n.push(f.yytext),i.push(f.yylloc),r.push(b[1]),_=null,l=f.yyleng,a=f.yytext,s=f.yylineno,g=f.yylloc;break;case 2:if(E=this.productions_[b[1]][1],I.$=n[n.length-E],I._$={first_line:i[i.length-(E||1)].first_line,last_line:i[i.length-1].last_line,first_column:i[i.length-(E||1)].first_column,last_column:i[i.length-1].last_column},y&&(I._$.range=[i[i.length-(E||1)].range[0],i[i.length-1].range[1]]),void 0!==(x=this.performAction.apply(I,[a,l,s,p.yy,b[1],n,i].concat(h))))return x;E&&(r=r.slice(0,-1*E*2),n=n.slice(0,-1*E),i=i.slice(0,-1*E)),r.push(this.productions_[b[1]][0]),n.push(I.$),i.push(I._$),O=o[r[r.length-2]][r[r.length-1]],r.push(O);break;case 3:return!0}}return!0}},f={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,r=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===n.length?this.yylloc.first_column:0)+n[n.length-r.length].length-r[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var r,n,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(n=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],r=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),r)return r;if(this._backtrack){for(var o in i)this[o]=i[o];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,r,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),o=0;oe[0].length)){if(e=r,n=o,this.options.backtrack_lexer){if(!1!==(t=this.test_match(r,i[o])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,i[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(t,e,r,n){switch(r){case 0:break;case 1:return 6;case 2:return e.yytext=e.yytext.substr(1,e.yyleng-2),4;case 3:return 17;case 4:return 18;case 5:return 23;case 6:return 24;case 7:return 22;case 8:return 21;case 9:return 10;case 10:return 11;case 11:return 8;case 12:return 14;case 13:return"INVALID"}},rules:[/^(?:\s+)/,/^(?:(-?([0-9]|[1-9][0-9]+))(\.[0-9]+)?([eE][-+]?[0-9]+)?\b)/,/^(?:"(?:\\[\\"bfnrt/]|\\u[a-fA-F0-9]{4}|[^\\\0-\x09\x0a-\x1f"])*")/,/^(?:\{)/,/^(?:\})/,/^(?:\[)/,/^(?:\])/,/^(?:,)/,/^(?::)/,/^(?:true\b)/,/^(?:false\b)/,/^(?:null\b)/,/^(?:$)/,/^(?:.)/],conditions:{INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,10,11,12,13],inclusive:!0}}};function p(){this.yy={}}return h.lexer=f,p.prototype=h,h.Parser=p,new p}();e.parser=r,e.Parser=r.Parser,e.parse=function(){return r.parse.apply(r,arguments)}}));new Set(["vector","raster","raster-dem"]);const Mr={StyleExpression:Je,isExpression:$e,isExpressionFilter:yr,createExpression:Qe,createPropertyExpression:rr,normalizePropertyExpression:function(t,e){if(Ve(t))return new nr(t,e);if($e(t)){const r=rr(t,e);if("error"===r.result)throw new Error(r.value.map(t=>`${t.key}: ${t.message}`).join(", "));return r.value}{let r=t;return"string"==typeof t&&"color"===e.type&&(r=J.parse(t)),{kind:"constant",evaluate:()=>r}}},ZoomConstantExpression:tr,ZoomDependentExpression:er,StylePropertyFunction:nr},Nr={convertFunction:ar,createFunction:Ye,isFunction:Ve}}).call(this,r(90),r(67).Buffer)},function(t,e,r){"use strict";var n=function(){function t(){this.disposed=!1}return t.prototype.dispose=function(){this.disposed||(this.disposed=!0,this.disposeInternal())},t.prototype.disposeInternal=function(){},t}();e.a=n},function(t,e,r){"use strict";var n,i=r(45),o=r(9),a=r(15),s=r(44),l=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),u=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r,a)||this;return s.crossOrigin_=i,s.src_=n,s.key=n,s.image_=new Image,null!==i&&(s.image_.crossOrigin=i),s.unlisten_=null,s.tileLoadFunction_=o,s}return l(e,t),e.prototype.getImage=function(){return this.image_},e.prototype.setImage=function(t){this.image_=t,this.state=o.a.LOADED,this.unlistenImage_(),this.changed()},e.prototype.handleImageError_=function(){var t;this.state=o.a.ERROR,this.unlistenImage_(),this.image_=((t=Object(a.a)(1,1)).fillStyle="rgba(0,0,0,0)",t.fillRect(0,0,1,1),t.canvas),this.changed()},e.prototype.handleImageLoad_=function(){var t=this.image_;t.naturalWidth&&t.naturalHeight?this.state=o.a.LOADED:this.state=o.a.EMPTY,this.unlistenImage_(),this.changed()},e.prototype.load=function(){this.state==o.a.ERROR&&(this.state=o.a.IDLE,this.image_=new Image,null!==this.crossOrigin_&&(this.image_.crossOrigin=this.crossOrigin_)),this.state==o.a.IDLE&&(this.state=o.a.LOADING,this.changed(),this.tileLoadFunction_(this,this.src_),this.unlisten_=Object(s.b)(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this)))},e.prototype.unlistenImage_=function(){this.unlisten_&&(this.unlisten_(),this.unlisten_=null)},e}(i.a);e.a=u},function(t,e,r){"use strict";r.d(e,"a",(function(){return n}));class n{async fetch(t,e){return Promise.all(t.map(t=>this.fetchSlice(t,e)))}async fetchSlice(t){throw new Error(`fetching of slice ${t} not possible, not implemented`)}get fileSize(){return null}async close(){}}},function(t,e,r){"use strict";r.d(e,"b",(function(){return f})),r.d(e,"a",(function(){return p})),r.d(e,"c",(function(){return d}));var n,i=r(48),o=r(5),a=r(0),s=r(15),l=r(1),u=r(4);function c(t,e,r,n,i){t.beginPath(),t.moveTo(0,0),t.lineTo(e,r),t.lineTo(n,i),t.closePath(),t.save(),t.clip(),t.fillRect(0,0,Math.max(e,n)+1,Math.max(r,i)),t.restore()}function h(t,e){return Math.abs(t[4*e]-210)>2||Math.abs(t[4*e+3]-191.25)>2}function f(t,e,r,n){var i=Object(l.z)(r,e,t),o=Object(l.p)(e,n,r),s=e.getMetersPerUnit();void 0!==s&&(o*=s);var u=t.getMetersPerUnit();void 0!==u&&(o/=u);var c=t.getExtent();if(!c||Object(a.g)(c,i)){var h=Object(l.p)(t,o,i)/o;isFinite(h)&&h>0&&(o/=h)}return o}function p(t,e,r,n){var i=Object(a.x)(r),o=f(t,e,i,n);return(!isFinite(o)||o<=0)&&Object(a.t)(r,(function(r){return o=f(t,e,r,n),isFinite(o)&&o>0})),o}function d(t,e,r,l,f,p,d,g,y,m,_,v){var b=Object(s.a)(Math.round(r*t),Math.round(r*e));if(v||Object(o.a)(b,i.a),0===y.length)return b.canvas;function x(t){return Math.round(t*r)/r}b.scale(r,r),b.globalCompositeOperation="lighter";var w=Object(a.k)();y.forEach((function(t,e,r){Object(a.q)(w,t.extent)}));var E=Object(a.F)(w),O=Object(a.A)(w),S=Object(s.a)(Math.round(r*E/l),Math.round(r*O/l));v||Object(o.a)(S,i.a);var I=r/l;y.forEach((function(t,e,r){var n=t.extent[0]-w[0],i=-(t.extent[3]-w[3]),o=Object(a.F)(t.extent),s=Object(a.A)(t.extent);t.image.width>0&&t.image.height>0&&S.drawImage(t.image,m,m,t.image.width-2*m,t.image.height-2*m,n*I,i*I,o*I,s*I)}));var C=Object(a.D)(d);return g.getTriangles().forEach((function(t,e,i){var o=t.source,a=t.target,s=o[0][0],f=o[0][1],d=o[1][0],g=o[1][1],y=o[2][0],m=o[2][1],_=x((a[0][0]-C[0])/p),E=x(-(a[0][1]-C[1])/p),O=x((a[1][0]-C[0])/p),I=x(-(a[1][1]-C[1])/p),T=x((a[2][0]-C[0])/p),P=x(-(a[2][1]-C[1])/p),R=s,L=f;s=0,f=0;var M=[[d-=R,g-=L,0,0,O-_],[y-=R,m-=L,0,0,T-_],[0,0,d,g,I-E],[0,0,y,m,P-E]],N=Object(u.i)(M);if(N){if(b.save(),b.beginPath(),function(){if(void 0===n){var t=document.createElement("canvas").getContext("2d");t.globalCompositeOperation="lighter",t.fillStyle="rgba(210, 0, 0, 0.75)",c(t,4,5,4,0),c(t,4,5,0,5);var e=t.getImageData(0,0,3,3).data;n=h(e,0)||h(e,4)||h(e,8)}return n}()||!v){b.moveTo(O,I);for(var A=_-O,k=E-I,j=0;j<4;j++)b.lineTo(O+x((j+1)*A/4),I+x(j*k/3)),3!=j&&b.lineTo(O+x((j+1)*A/4),I+x((j+1)*k/3));b.lineTo(T,P)}else b.moveTo(O,I),b.lineTo(_,E),b.lineTo(T,P);b.clip(),b.transform(N[0],N[2],N[1],N[3],_,E),b.translate(w[0]-R,w[3]-L),b.scale(l/r,-l/r),b.drawImage(S.canvas,0,0),b.restore()}})),_&&(b.save(),b.globalCompositeOperation="source-over",b.strokeStyle="black",b.lineWidth=1,g.getTriangles().forEach((function(t,e,r){var n=t.target,i=(n[0][0]-C[0])/p,o=-(n[0][1]-C[1])/p,a=(n[1][0]-C[0])/p,s=-(n[1][1]-C[1])/p,l=(n[2][0]-C[0])/p,u=-(n[2][1]-C[1])/p;b.beginPath(),b.moveTo(a,s),b.lineTo(i,o),b.lineTo(l,u),b.closePath(),b.stroke()})),b.restore()),b.canvas}},function(t,e,r){"use strict";e.a={PRELOAD:"preload",USE_INTERIM_TILES_ON_ERROR:"useInterimTilesOnError"}},function(t,e,r){"use strict";var n,i=r(21),o=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),a=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.inversePixelTransform=r,o.frameState=n,o.context=i,o}return o(e,t),e}(i.a);e.a=a},function(t,e,r){"use strict";var n,i=r(84),o=r(76),a=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),s=function(t){function e(e){return t.call(this,e)||this}return a(e,t),e.prototype.createRenderer=function(){return new o.a(this)},e.prototype.getData=function(e){return t.prototype.getData.call(this,e)},e}(i.a);e.a=s},function(t,e,r){"use strict";r.d(e,"b",(function(){return a})),r.d(e,"c",(function(){return l})),r.d(e,"a",(function(){return c})),r.d(e,"d",(function(){return h}));var n=r(2),i=r(4),o=6371008.8;function a(t,e,r){var n=r||o,a=Object(i.m)(t[1]),s=Object(i.m)(e[1]),l=(s-a)/2,u=Object(i.m)(e[0]-t[0])/2,c=Math.sin(l)*Math.sin(l)+Math.sin(u)*Math.sin(u)*Math.cos(a)*Math.cos(s);return 2*n*Math.atan2(Math.sqrt(c),Math.sqrt(1-c))}function s(t,e){for(var r=0,n=0,i=t.length;n= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};e.REVISION_CHANGES=p;var d="[object Object]";n.prototype={constructor:n,logger:u.default,log:u.default.log,registerHelper:function(t,e){if(o.toString.call(t)===d){if(e)throw new a.default("Arg not supported with multiple helpers");o.extend(this.helpers,t)}else this.helpers[t]=e},unregisterHelper:function(t){delete this.helpers[t]},registerPartial:function(t,e){if(o.toString.call(t)===d)o.extend(this.partials,t);else{if(void 0===e)throw new a.default('Attempting to register a partial called "'+t+'" as undefined');this.partials[t]=e}},unregisterPartial:function(t){delete this.partials[t]},registerDecorator:function(t,e){if(o.toString.call(t)===d){if(e)throw new a.default("Arg not supported with multiple decorators");o.extend(this.decorators,t)}else this.decorators[t]=e},unregisterDecorator:function(t){delete this.decorators[t]}};var g=u.default.log;e.log=g,e.createFrame=o.createFrame,e.logger=u.default},function(t,e){"use strict";function r(t){return c[t]}function n(t){for(var e=1;e":">",'"':""","'":"'","`":"`","=":"="},h=/[&<>"'`=]/g,f=/[&<>"'`=]/,p=Object.prototype.toString;e.toString=p;var d=function(t){return"function"==typeof t};d(/x/)&&(e.isFunction=d=function(t){return"function"==typeof t&&"[object Function]"===p.call(t)}),e.isFunction=d;var g=Array.isArray||function(t){return!(!t||"object"!=typeof t)&&"[object Array]"===p.call(t)};e.isArray=g},function(t,e,r){"use strict";function n(t,e){var r=e&&e.loc,a=void 0,s=void 0,l=void 0,u=void 0;r&&(a=r.start.line,s=r.end.line,l=r.start.column,u=r.end.column,t+=" - "+a+":"+l);for(var c=Error.prototype.constructor.call(this,t),h=0;h0?(r.ids&&(r.ids=[r.name]),t.helpers.each(e,r)):i(this);if(r.data&&r.ids){var a=n.createFrame(r.data);a.contextPath=n.appendContextPath(r.data.contextPath,r.name),r={data:a}}return o(e,r)}))},t.exports=e.default},function(t,e,r){(function(n){"use strict";var i=r(1).default;e.__esModule=!0;var o=r(5),a=i(r(6));e.default=function(t){t.registerHelper("each",(function(t,e){function r(e,r,n){c&&(c.key=e,c.index=r,c.first=0===r,c.last=!!n,h&&(c.contextPath=h+e)),u+=i(t[e],{data:c,blockParams:o.blockParams([t[e],e],[h+e,null])})}if(!e)throw new a.default("Must pass iterator to #each");var i=e.fn,s=e.inverse,l=0,u="",c=void 0,h=void 0;if(e.data&&e.ids&&(h=o.appendContextPath(e.data.contextPath,e.ids[0])+"."),o.isFunction(t)&&(t=t.call(this)),e.data&&(c=o.createFrame(e.data)),t&&"object"==typeof t)if(o.isArray(t))for(var f=t.length;l=0?e:parseInt(t,10)}return t},log:function(t){if(t=i.lookupLevel(t),"undefined"!=typeof console&&i.lookupLevel(i.level)<=t){var e=i.methodMap[t];console[e]||(e="log");for(var r=arguments.length,n=Array(r>1?r-1:0),o=1;o=y.LAST_COMPATIBLE_COMPILER_REVISION&&e<=y.COMPILER_REVISION)){if(e2&&x.push("'"+this.terminals_[_]+"'");E=this.lexer.showPosition?"Parse error on line "+(l+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+x.join(", ")+", got '"+(this.terminals_[p]||p)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(E,{text:this.lexer.match,token:this.terminals_[p]||p,line:this.lexer.yylineno,loc:h,expected:x})}}if(y[0]instanceof Array&&y.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+p);switch(y[0]){case 1:n.push(p),i.push(this.lexer.yytext),o.push(this.lexer.yylloc),n.push(y[1]),p=null,d?(p=d,d=null):(u=this.lexer.yyleng,s=this.lexer.yytext,l=this.lexer.yylineno,h=this.lexer.yylloc,c>0&&c--);break;case 2:if(v=this.productions_[y[1]][1],w.$=i[i.length-v],w._$={first_line:o[o.length-(v||1)].first_line,last_line:o[o.length-1].last_line,first_column:o[o.length-(v||1)].first_column,last_column:o[o.length-1].last_column},f&&(w._$.range=[o[o.length-(v||1)].range[0],o[o.length-1].range[1]]),void 0!==(m=this.performAction.call(w,s,u,l,this.yy,y[1],i,o)))return m;v&&(n=n.slice(0,-1*v*2),i=i.slice(0,-1*v),o=o.slice(0,-1*v)),n.push(this.productions_[y[1]][0]),i.push(w.$),o.push(w._$),b=a[n[n.length-2]][n[n.length-1]],n.push(b);break;case 3:return!0}}return!0}},r=function(){var t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t){return this._input=t,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,r=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e-1),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===n.length?this.yylloc.first_column:0)+n[n.length-r.length].length-r[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-e]),this},more:function(){return this._more=!0,this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},next:function(){if(this.done)return this.EOF;var t,e,r,n,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var o=this._currentRules(),a=0;ae[0].length)||(e=r,n=a,this.options.flex));a++);return e?((i=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],t=this.performAction.call(this,this.yy,this,o[n],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),t||void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return void 0!==t?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(t){this.begin(t)},options:{},performAction:function(t,e,r,n){function i(t,r){return e.yytext=e.yytext.substring(t,e.yyleng-r+t)}switch(r){case 0:if("\\\\"===e.yytext.slice(-2)?(i(0,1),this.begin("mu")):"\\"===e.yytext.slice(-1)?(i(0,1),this.begin("emu")):this.begin("mu"),e.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(i(5,9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(e.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return e.yytext=i(1,2).replace(/\\"/g,'"'),80;case 32:return e.yytext=i(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return e.yytext=e.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},rules:[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]+?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],conditions:{mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}}};return t}();return e.lexer=r,t.prototype=e,e.Parser=t,new t}();e.default=r,t.exports=e.default},function(t,e,r){"use strict";function n(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=t}function i(t,e,r){void 0===e&&(e=t.length);var n=t[e-1],i=t[e-2];return n?"ContentStatement"===n.type?(i||!r?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(n.original):void 0:r}function o(t,e,r){void 0===e&&(e=-1);var n=t[e+1],i=t[e+2];return n?"ContentStatement"===n.type?(i||!r?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(n.original):void 0:r}function a(t,e,r){var n=t[null==e?0:e+1];if(n&&"ContentStatement"===n.type&&(r||!n.rightStripped)){var i=n.value;n.value=n.value.replace(r?/^\s+/:/^[ \t]*\r?\n?/,""),n.rightStripped=n.value!==i}}function s(t,e,r){var n=t[null==e?t.length-1:e-1];if(n&&"ContentStatement"===n.type&&(r||!n.leftStripped)){var i=n.value;return n.value=n.value.replace(r?/\s+$/:/[ \t]+$/,""),n.leftStripped=n.value!==i,n.leftStripped}}var l=r(1).default;e.__esModule=!0;var u=l(r(39));n.prototype=new u.default,n.prototype.Program=function(t){var e=!this.options.ignoreStandalone,r=!this.isRootSeen;this.isRootSeen=!0;for(var n=t.body,l=0,u=n.length;l0)throw new g.default("Invalid path: "+n,{loc:r});".."===l&&o++}}return{type:"PathExpression",data:t,depth:o,parts:i,original:n,loc:r}}function u(t,e,r,n,i,o){var a=n.charAt(3)||n.charAt(2),s="{"!==a&&"&"!==a;return{type:/\*/.test(n)?"Decorator":"MustacheStatement",path:t,params:e,hash:r,escaped:s,strip:i,loc:this.locInfo(o)}}function c(t,e,r,i){n(t,r);var o={type:"Program",body:e,strip:{},loc:i=this.locInfo(i)};return{type:"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:o,openStrip:{},inverseStrip:{},closeStrip:{},loc:i}}function h(t,e,r,i,o,a){i&&i.path&&n(t,i);var s=/\*/.test(t.open);e.blockParams=t.blockParams;var l=void 0,u=void 0;if(r){if(s)throw new g.default("Unexpected inverse block on decorator",r);r.chain&&(r.program.body[0].closeStrip=i.strip),u=r.strip,l=r.program}return o&&(o=l,l=e,e=o),{type:s?"DecoratorBlock":"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:e,inverse:l,openStrip:t.strip,inverseStrip:u,closeStrip:i&&i.strip,loc:this.locInfo(a)}}function f(t,e){if(!e&&t.length){var r=t[0].loc,n=t[t.length-1].loc;r&&n&&(e={source:r.source,start:{line:r.start.line,column:r.start.column},end:{line:n.end.line,column:n.end.column}})}return{type:"Program",body:t,strip:{},loc:e}}function p(t,e,r,i){return n(t,r),{type:"PartialBlockStatement",name:t.path,params:t.params,hash:t.hash,program:e,openStrip:t.strip,closeStrip:r&&r.strip,loc:this.locInfo(i)}}var d=r(1).default;e.__esModule=!0,e.SourceLocation=i,e.id=o,e.stripFlags=a,e.stripComment=s,e.preparePath=l,e.prepareMustache=u,e.prepareRawBlock=c,e.prepareBlock=h,e.prepareProgram=f,e.preparePartialBlock=p;var g=d(r(6))},function(t,e,r){"use strict";function n(){}function i(t,e,r){if(null==t||"string"!=typeof t&&"Program"!==t.type)throw new u.default("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+t);"data"in(e=e||{})||(e.data=!0),e.compat&&(e.useDepths=!0);var n=r.parse(t,e),i=(new r.Compiler).compile(n,e);return(new r.JavaScriptCompiler).compile(i,e)}function o(t,e,r){function n(){var n=r.parse(t,e),i=(new r.Compiler).compile(n,e),o=(new r.JavaScriptCompiler).compile(i,e,void 0,!0);return r.template(o)}function i(t,e){return o||(o=n()),o.call(this,t,e)}if(void 0===e&&(e={}),null==t||"string"!=typeof t&&"Program"!==t.type)throw new u.default("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+t);"data"in(e=c.extend({},e))||(e.data=!0),e.compat&&(e.useDepths=!0);var o=void 0;return i._setup=function(t){return o||(o=n()),o._setup(t)},i._child=function(t,e,r,i){return o||(o=n()),o._child(t,e,r,i)},i}function a(t,e){if(t===e)return!0;if(c.isArray(t)&&c.isArray(e)&&t.length===e.length){for(var r=0;r1)throw new u.default("Unsupported number of partial arguments: "+r.length,t);r.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):r.push({type:"PathExpression",parts:[],depth:0}));var n=t.name.original,i="SubExpression"===t.name.type;i&&this.accept(t.name),this.setupFullMustacheParams(t,e,void 0,!0);var o=t.indent||"";this.options.preventIndent&&o&&(this.opcode("appendContent",o),o=""),this.opcode("invokePartial",i,n,o),this.opcode("append")},PartialBlockStatement:function(t){this.PartialStatement(t)},MustacheStatement:function(t){this.SubExpression(t),t.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(t){this.DecoratorBlock(t)},ContentStatement:function(t){t.value&&this.opcode("appendContent",t.value)},CommentStatement:function(){},SubExpression:function(t){s(t);var e=this.classifySexpr(t);"simple"===e?this.simpleSexpr(t):"helper"===e?this.helperSexpr(t):this.ambiguousSexpr(t)},ambiguousSexpr:function(t,e,r){var n=t.path,i=n.parts[0],o=null!=e||null!=r;this.opcode("getContext",n.depth),this.opcode("pushProgram",e),this.opcode("pushProgram",r),n.strict=!0,this.accept(n),this.opcode("invokeAmbiguous",i,o)},simpleSexpr:function(t){var e=t.path;e.strict=!0,this.accept(e),this.opcode("resolvePossibleLambda")},helperSexpr:function(t,e,r){var n=this.setupFullMustacheParams(t,e,r),i=t.path,o=i.parts[0];if(this.options.knownHelpers[o])this.opcode("invokeKnownHelper",n.length,o);else{if(this.options.knownHelpersOnly)throw new u.default("You specified knownHelpersOnly, but used the unknown helper "+o,t);i.strict=!0,i.falsy=!0,this.accept(i),this.opcode("invokeHelper",n.length,i.original,h.default.helpers.simpleId(i))}},PathExpression:function(t){this.addDepth(t.depth),this.opcode("getContext",t.depth);var e=t.parts[0],r=h.default.helpers.scopedId(t),n=!t.depth&&!r&&this.blockParamIndex(e);n?this.opcode("lookupBlockParam",n,t.parts):e?t.data?(this.options.data=!0,this.opcode("lookupData",t.depth,t.parts,t.strict)):this.opcode("lookupOnContext",t.parts,t.falsy,t.strict,r):this.opcode("pushContext")},StringLiteral:function(t){this.opcode("pushString",t.value)},NumberLiteral:function(t){this.opcode("pushLiteral",t.value)},BooleanLiteral:function(t){this.opcode("pushLiteral",t.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(t){var e=t.pairs,r=0,n=e.length;for(this.opcode("pushHash");r=0)return[e,i]}}}},function(t,e,r){"use strict";function n(t){this.value=t}function i(){}function o(t,e,r,n){var i=e.popStack(),o=0,a=r.length;for(t&&a--;o0&&(e+=", "+r.join(", "));var n=0;for(var i in this.aliases){var o=this.aliases[i];this.aliases.hasOwnProperty(i)&&o.children&&o.referenceCount>1&&(e+=", alias"+ ++n+"="+i,o.children[0]="alias"+n)}var a=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&a.push("blockParams"),this.useDepths&&a.push("depths");var s=this.mergeSource(e);return t?(a.push(s),Function.apply(this,a)):this.source.wrap(["function(",a.join(","),") {\n ",s,"}"])},mergeSource:function(t){var e=this.environment.isSimple,r=!this.forceBuffer,n=void 0,i=void 0,o=void 0,a=void 0;return this.source.each((function(t){t.appendToBuffer?(o?t.prepend(" + "):o=t,a=t):(o&&(i?o.prepend("buffer += "):n=!0,a.add(";"),o=a=void 0),i=!0,e||(r=!1))})),r?o?(o.prepend("return "),a.add(";")):i||this.source.push('return "";'):(t+=", buffer = "+(n?"":this.initializeBuffer()),o?(o.prepend("return buffer + "),a.add(";")):this.source.push("return buffer;")),t&&this.source.prepend("var "+t.substring(2)+(n?"":";\n")),this.source.merge()},blockValue:function(t){var e=this.aliasable("container.hooks.blockHelperMissing"),r=[this.contextName(0)];this.setupHelperArgs(t,0,r);var n=this.popStack();r.splice(1,0,n),this.push(this.source.functionCall(e,"call",r))},ambiguousBlockValue:function(){var t=this.aliasable("container.hooks.blockHelperMissing"),e=[this.contextName(0)];this.setupHelperArgs("",0,e,!0),this.flushInline();var r=this.topStack();e.splice(1,0,r),this.pushSource(["if (!",this.lastHelper,") { ",r," = ",this.source.functionCall(t,"call",e),"}"])},appendContent:function(t){this.pendingContent?t=this.pendingContent+t:this.pendingLocation=this.source.currentLocation,this.pendingContent=t},append:function(){if(this.isInline())this.replaceStack((function(t){return[" != null ? ",t,' : ""']})),this.pushSource(this.appendToBuffer(this.popStack()));else{var t=this.popStack();this.pushSource(["if (",t," != null) { ",this.appendToBuffer(t,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(t){this.lastContext=t},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(t,e,r,n){var i=0;n||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(t[i++])),this.resolvePath("context",t,i,e,r)},lookupBlockParam:function(t,e){this.useBlockParams=!0,this.push(["blockParams[",t[0],"][",t[1],"]"]),this.resolvePath("context",e,1)},lookupData:function(t,e,r){t?this.pushStackLiteral("container.data(data, "+t+")"):this.pushStackLiteral("data"),this.resolvePath("data",e,0,!0,r)},resolvePath:function(t,e,r,n,i){var a=this;if(this.options.strict||this.options.assumeObjects)this.push(o(this.options.strict&&i,this,e,t));else for(var s=e.length;rthis.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var t=this.inlineStack;this.inlineStack=[];for(var e=0,r=t.length;e=200&&this.status<=299}get status(){throw new Error("not implemented")}getHeader(t){throw new Error("not implemented")}async getData(){throw new Error("not implemented")}}class i{constructor(t){this.url=t}async request({headers:t,credentials:e,signal:r}={}){throw new Error("request is not implemented")}}},function(t,e,r){"use strict";var n=r(11),i=function(){function t(t){this.highWaterMark=void 0!==t?t:2048,this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null}return t.prototype.canExpireCache=function(){return this.highWaterMark>0&&this.getCount()>this.highWaterMark},t.prototype.expireCache=function(t){for(;this.canExpireCache();)this.pop()},t.prototype.clear=function(){this.count_=0,this.entries_={},this.oldest_=null,this.newest_=null},t.prototype.containsKey=function(t){return this.entries_.hasOwnProperty(t)},t.prototype.forEach=function(t){for(var e=this.oldest_;e;)t(e.value_,e.key_,this),e=e.newer},t.prototype.get=function(t,e){var r=this.entries_[t];return Object(n.a)(void 0!==r,15),r===this.newest_||(r===this.oldest_?(this.oldest_=this.oldest_.newer,this.oldest_.older=null):(r.newer.older=r.older,r.older.newer=r.newer),r.newer=null,r.older=this.newest_,this.newest_.newer=r,this.newest_=r),r.value_},t.prototype.remove=function(t){var e=this.entries_[t];return Object(n.a)(void 0!==e,15),e===this.newest_?(this.newest_=e.older,this.newest_&&(this.newest_.newer=null)):e===this.oldest_?(this.oldest_=e.newer,this.oldest_&&(this.oldest_.older=null)):(e.newer.older=e.older,e.older.newer=e.newer),delete this.entries_[t],--this.count_,e.value_},t.prototype.getCount=function(){return this.count_},t.prototype.getKeys=function(){var t,e=new Array(this.count_),r=0;for(t=this.newest_;t;t=t.older)e[r++]=t.key_;return e},t.prototype.getValues=function(){var t,e=new Array(this.count_),r=0;for(t=this.newest_;t;t=t.older)e[r++]=t.value_;return e},t.prototype.peekLast=function(){return this.oldest_.value_},t.prototype.peekLastKey=function(){return this.oldest_.key_},t.prototype.peekFirstKey=function(){return this.newest_.key_},t.prototype.pop=function(){var t=this.oldest_;return delete this.entries_[t.key_],t.newer&&(t.newer.older=null),this.oldest_=t.newer,this.oldest_||(this.newest_=null),--this.count_,t.value_},t.prototype.replace=function(t,e){this.get(t),this.entries_[t].value_=e},t.prototype.set=function(t,e){Object(n.a)(!(t in this.entries_),16);var r={key_:t,newer:null,older:this.newest_,value_:e};this.newest_?this.newest_.newer=r:this.oldest_=r,this.newest_=r,this.entries_[t]=r,++this.count_},t.prototype.setSize=function(t){this.highWaterMark=t},t}();e.a=i},function(t,e,r){"use strict";(function(t){r.d(e,"a",(function(){return a}));var n,i=r(3),o=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)});function a(t,e,r,n){var o=document.createElement("script"),a="olc_"+Object(i.c)(e);function s(){delete window[a],o.parentNode.removeChild(o)}o.async=!0,o.src=t+(-1==t.indexOf("?")?"?":"&")+(n||"callback")+"="+a;var l=setTimeout((function(){s(),r&&r()}),1e4);window[a]=function(t){clearTimeout(l),s(),e(t)},document.getElementsByTagName("head")[0].appendChild(o)}(function(t){function e(e){var r=this,n="Unexpected response status: "+e.status;return(r=t.call(this,n)||this).name="ResponseError",r.response=e,r}o(e,t)})(Error),function(t){function e(e){var r=t.call(this,"Failed to issue request")||this;return r.name="ClientError",r.client=e,r}o(e,t)}(Error)}).call(this,r(90))},function(t,e,r){"use strict";e.a={BOTTOM_LEFT:"bottom-left",BOTTOM_RIGHT:"bottom-right",TOP_LEFT:"top-left",TOP_RIGHT:"top-right"}},function(t,e,r){"use strict";(function(t){ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +var n=r(159),i=r(94),o=r(160);function a(){return l.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function s(t,e){if(a()=a())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+a().toString(16)+" bytes");return 0|t}function d(t,e){if(l.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return B(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return z(t).length;default:if(n)return B(t).length;e=(""+e).toLowerCase(),n=!0}}function g(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return R(this,e,r);case"utf8":case"utf-8":return I(this,e,r);case"ascii":return T(this,e,r);case"latin1":case"binary":return P(this,e,r);case"base64":return S(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function y(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function m(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=l.from(e,n)),l.isBuffer(e))return 0===e.length?-1:_(t,e,r,n,i);if("number"==typeof e)return e&=255,l.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):_(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function _(t,e,r,n,i){var o,a=1,s=t.length,l=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;a=2,s/=2,l/=2,r/=2}function u(t,e){return 1===a?t[e]:t.readUInt16BE(e*a)}if(i){var c=-1;for(o=r;os&&(r=s-l),o=r;o>=0;o--){for(var h=!0,f=0;fi&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var a=0;a>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function S(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function I(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:u>223?3:u>191?2:1;if(i+h<=r)switch(h){case 1:u<128&&(c=u);break;case 2:128==(192&(o=t[i+1]))&&(l=(31&u)<<6|63&o)>127&&(c=l);break;case 3:o=t[i+1],a=t[i+2],128==(192&o)&&128==(192&a)&&(l=(15&u)<<12|(63&o)<<6|63&a)>2047&&(l<55296||l>57343)&&(c=l);break;case 4:o=t[i+1],a=t[i+2],s=t[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&(l=(15&u)<<18|(63&o)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(c=l)}null===c?(c=65533,h=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),i+=h}return function(t){var e=t.length;if(e<=C)return String.fromCharCode.apply(String,t);var r="",n=0;for(;n0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},l.prototype.compare=function(t,e,r,n,i){if(!l.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),a=(r>>>=0)-(e>>>=0),s=Math.min(o,a),u=this.slice(n,i),c=t.slice(e,r),h=0;hi)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return v(this,t,e,r);case"utf8":case"utf-8":return b(this,t,e,r);case"ascii":return x(this,t,e,r);case"latin1":case"binary":return w(this,t,e,r);case"base64":return E(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var C=4096;function T(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function N(t,e,r,n,i,o){if(!l.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function A(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function k(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function j(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function F(t,e,r,n,o){return o||j(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function D(t,e,r,n,o){return o||j(t,0,r,8),i.write(t,e,r,n,52,8),r+8}l.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},l.prototype.readUInt8=function(t,e){return e||M(t,1,this.length),this[t]},l.prototype.readUInt16LE=function(t,e){return e||M(t,2,this.length),this[t]|this[t+1]<<8},l.prototype.readUInt16BE=function(t,e){return e||M(t,2,this.length),this[t]<<8|this[t+1]},l.prototype.readUInt32LE=function(t,e){return e||M(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},l.prototype.readUInt32BE=function(t,e){return e||M(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},l.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||M(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},l.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||M(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},l.prototype.readInt8=function(t,e){return e||M(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},l.prototype.readInt16LE=function(t,e){e||M(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt16BE=function(t,e){e||M(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},l.prototype.readInt32LE=function(t,e){return e||M(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},l.prototype.readInt32BE=function(t,e){return e||M(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},l.prototype.readFloatLE=function(t,e){return e||M(t,4,this.length),i.read(this,t,!0,23,4)},l.prototype.readFloatBE=function(t,e){return e||M(t,4,this.length),i.read(this,t,!1,23,4)},l.prototype.readDoubleLE=function(t,e){return e||M(t,8,this.length),i.read(this,t,!0,52,8)},l.prototype.readDoubleBE=function(t,e){return e||M(t,8,this.length),i.read(this,t,!1,52,8)},l.prototype.writeUIntLE=function(t,e,r,n){(t=+t,e|=0,r|=0,n)||N(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},l.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||N(this,t,e,1,255,0),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},l.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||N(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):A(this,t,e,!0),e+2},l.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||N(this,t,e,2,65535,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):A(this,t,e,!1),e+2},l.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||N(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):k(this,t,e,!0),e+4},l.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||N(this,t,e,4,4294967295,0),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):k(this,t,e,!1),e+4},l.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);N(this,t,e,r,i-1,-i)}var o=0,a=1,s=0;for(this[e]=255&t;++o>0)-s&255;return e+r},l.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);N(this,t,e,r,i-1,-i)}var o=r-1,a=1,s=0;for(this[e+o]=255&t;--o>=0&&(a*=256);)t<0&&0===s&&0!==this[e+o+1]&&(s=1),this[e+o]=(t/a>>0)-s&255;return e+r},l.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||N(this,t,e,1,127,-128),l.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},l.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||N(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):A(this,t,e,!0),e+2},l.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||N(this,t,e,2,32767,-32768),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):A(this,t,e,!1),e+2},l.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||N(this,t,e,4,2147483647,-2147483648),l.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):k(this,t,e,!0),e+4},l.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||N(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),l.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):k(this,t,e,!1),e+4},l.prototype.writeFloatLE=function(t,e,r){return F(this,t,e,!0,r)},l.prototype.writeFloatBE=function(t,e,r){return F(this,t,e,!1,r)},l.prototype.writeDoubleLE=function(t,e,r){return D(this,t,e,!0,r)},l.prototype.writeDoubleBE=function(t,e,r){return D(this,t,e,!1,r)},l.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!l.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function z(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(G,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function V(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(90))},function(t,e,r){"use strict";var n,i=r(3),o=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),a=function(t){function e(e){var r=this,n="Assertion failed. See https://openlayers.org/en/"+("latest"===i.a?i.a:"v"+i.a.split("-")[0])+"/doc/errors/#"+e+" for details.";return(r=t.call(this,n)||this).code=e,r.name="AssertionError",r.message=n,r}return o(e,t),e}(Error);e.a=a},function(t,e,r){"use strict";var n,i=r(42),o=r(7),a=r(3),s=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),l=function(t){function e(e,r,n,i){var o=t.call(this)||this;return o.extent=e,o.pixelRatio_=n,o.resolution=r,o.state=i,o}return s(e,t),e.prototype.changed=function(){this.dispatchEvent(o.a.CHANGE)},e.prototype.getExtent=function(){return this.extent},e.prototype.getImage=function(){return Object(a.b)()},e.prototype.getPixelRatio=function(){return this.pixelRatio_},e.prototype.getResolution=function(){return this.resolution},e.prototype.getState=function(){return this.state},e.prototype.load=function(){Object(a.b)()},e}(i.a);e.a=l},function(t,e,r){"use strict";var n,i=r(64),o=r(22),a=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return a(e,t),e.prototype.expireCache=function(t){for(;this.canExpireCache();){if(this.peekLast().getKey()in t)break;this.pop().release()}},e.prototype.pruneExceptNewestZ=function(){if(0!==this.getCount()){var t=this.peekFirstKey(),e=Object(o.b)(t)[0];this.forEach(function(t){t.tileCoord[0]!==e&&(this.remove(Object(o.d)(t.tileCoord)),t.release())}.bind(this))}},e}(i.a);e.a=s},function(t,e,r){"use strict";var n,i=r(39),o=r(7),a=r(45),s=r(9),l=r(82),u=r(57),c=r(4),h=r(0),f=r(8),p=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),d=function(t){function e(e,r,n,o,a,f,p,d,g,y,m,_){var v=t.call(this,a,s.a.IDLE,{interpolate:!!_})||this;v.renderEdges_=void 0!==m&&m,v.pixelRatio_=p,v.gutter_=d,v.canvas_=null,v.sourceTileGrid_=r,v.targetTileGrid_=o,v.wrappedTileCoord_=f||a,v.sourceTiles_=[],v.sourcesListenerKeys_=null,v.sourceZ_=0;var b=o.getTileCoordExtent(v.wrappedTileCoord_),x=v.targetTileGrid_.getExtent(),w=v.sourceTileGrid_.getExtent(),E=x?Object(h.B)(b,x):b;if(0===Object(h.u)(E))return v.state=s.a.EMPTY,v;var O=e.getExtent();O&&(w=w?Object(h.B)(w,O):O);var S=o.getResolution(v.wrappedTileCoord_[0]),I=Object(u.a)(e,n,E,S);if(!isFinite(I)||I<=0)return v.state=s.a.EMPTY,v;var C=void 0!==y?y:i.b;if(v.triangulation_=new l.a(e,n,E,w,I*C,S),0===v.triangulation_.getTriangles().length)return v.state=s.a.EMPTY,v;v.sourceZ_=r.getZForResolution(I);var T=v.triangulation_.calculateSourceExtent();if(w&&(e.canWrapX()?(T[1]=Object(c.b)(T[1],w[1],w[3]),T[3]=Object(c.b)(T[3],w[1],w[3])):T=Object(h.B)(T,w)),Object(h.u)(T)){for(var P=r.getTileRangeForExtentAndZ(T,v.sourceZ_),R=P.minX;R<=P.maxX;R++)for(var L=P.minY;L<=P.maxY;L++){var M=g(v.sourceZ_,R,L,p);M&&v.sourceTiles_.push(M)}0===v.sourceTiles_.length&&(v.state=s.a.EMPTY)}else v.state=s.a.EMPTY;return v}return p(e,t),e.prototype.getImage=function(){return this.canvas_},e.prototype.reproject_=function(){var t=[];if(this.sourceTiles_.forEach(function(e,r,n){e&&e.getState()==s.a.LOADED&&t.push({extent:this.sourceTileGrid_.getTileCoordExtent(e.tileCoord),image:e.getImage()})}.bind(this)),this.sourceTiles_.length=0,0===t.length)this.state=s.a.ERROR;else{var e=this.wrappedTileCoord_[0],r=this.targetTileGrid_.getTileSize(e),n="number"==typeof r?r:r[0],i="number"==typeof r?r:r[1],o=this.targetTileGrid_.getResolution(e),a=this.sourceTileGrid_.getResolution(this.sourceZ_),l=this.targetTileGrid_.getTileCoordExtent(this.wrappedTileCoord_);this.canvas_=Object(u.c)(n,i,this.pixelRatio_,a,this.sourceTileGrid_.getExtent(),o,l,this.triangulation_,t,this.gutter_,this.renderEdges_,this.interpolate),this.state=s.a.LOADED}this.changed()},e.prototype.load=function(){if(this.state==s.a.IDLE){this.state=s.a.LOADING,this.changed();var t=0;this.sourcesListenerKeys_=[],this.sourceTiles_.forEach(function(e,r,n){var i=e.getState();if(i==s.a.IDLE||i==s.a.LOADING){t++;var a=Object(f.a)(e,o.a.CHANGE,(function(r){var n=e.getState();n!=s.a.LOADED&&n!=s.a.ERROR&&n!=s.a.EMPTY||(Object(f.c)(a),0===--t&&(this.unlistenSources_(),this.reproject_()))}),this);this.sourcesListenerKeys_.push(a)}}.bind(this)),0===t?setTimeout(this.reproject_.bind(this),0):this.sourceTiles_.forEach((function(t,e,r){t.getState()==s.a.IDLE&&t.load()}))}},e.prototype.unlistenSources_=function(){this.sourcesListenerKeys_.forEach(f.c),this.sourcesListenerKeys_=null},e}(a.a);e.a=d},function(t,e,r){"use strict";var n,i=r(73),o=r(55),a=r(71),s=r(51),l=r(9),u=r(48),c=r(10),h=r(5),f=r(0),p=r(20),d=r(1),g=r(3),y=r(6),m=r(16),_=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),v=function(t){function e(e){var r=t.call(this,e)||this;return r.extentChanged=!0,r.renderedExtent_=null,r.renderedPixelRatio,r.renderedProjection=null,r.renderedRevision,r.renderedTiles=[],r.newTiles_=!1,r.tmpExtent=Object(f.k)(),r.tmpTileRange_=new s.b(0,0,0,0),r}return _(e,t),e.prototype.isDrawableTile=function(t){var e=this.getLayer(),r=t.getState(),n=e.getUseInterimTilesOnError();return r==l.a.LOADED||r==l.a.EMPTY||r==l.a.ERROR&&!n},e.prototype.getTile=function(t,e,r,n){var i=n.pixelRatio,o=n.viewState.projection,a=this.getLayer(),s=a.getSource().getTile(t,e,r,i,o);return s.getState()==l.a.ERROR&&(a.getUseInterimTilesOnError()?a.getPreload()>0&&(this.newTiles_=!0):s.setState(l.a.LOADED)),this.isDrawableTile(s)||(s=s.getInterimTile()),s},e.prototype.getData=function(t){var e=this.frameState;if(!e)return null;var r=this.getLayer(),n=Object(c.a)(e.pixelToCoordinateTransform,t.slice()),i=r.getExtent();if(i&&!Object(f.g)(i,n))return null;for(var s=e.pixelRatio,u=e.viewState.projection,h=e.viewState,p=r.getRenderSource(),d=p.getTileGridForProjection(h.projection),g=p.getTilePixelRatio(e.pixelRatio),y=d.getZForResolution(h.resolution);y>=d.getMinZoom();--y){var _=d.getTileCoordForCoordAndZ(n,y),v=p.getTile(y,_[1],_[2],s,u);if(!(v instanceof o.a||v instanceof a.a))return null;if(v.getState()===l.a.LOADED){var b=d.getOrigin(y),x=Object(m.d)(d.getTileSize(y)),w=d.getResolution(y),E=Math.floor(g*((n[0]-b[0])/w-_[1]*x[0])),O=Math.floor(g*((b[1]-n[1])/w-_[2]*x[1]));return this.getImageData(v.getImage(),E,O)}}return null},e.prototype.loadedTileCallback=function(e,r,n){return!!this.isDrawableTile(n)&&t.prototype.loadedTileCallback.call(this,e,r,n)},e.prototype.prepareFrame=function(t){return!!this.getLayer().getSource()},e.prototype.renderFrame=function(t,e){var r=t.layerStatesArray[t.layerIndex],n=t.viewState,i=n.projection,o=n.resolution,a=n.center,s=n.rotation,m=t.pixelRatio,_=this.getLayer(),v=_.getSource(),b=v.getRevision(),x=v.getTileGridForProjection(i),w=x.getZForResolution(o,v.zDirection),E=x.getResolution(w),O=t.extent,S=r.extent&&Object(d.m)(r.extent,i);S&&(O=Object(f.B)(O,Object(d.m)(r.extent,i)));var I=v.getTilePixelRatio(m),C=Math.round(t.size[0]*I),T=Math.round(t.size[1]*I);if(s){var P=Math.round(Math.sqrt(C*C+T*T));C=P,T=P}var R=E*C/2/I,L=E*T/2/I,M=[a[0]-R,a[1]-L,a[0]+R,a[1]+L],N=x.getTileRangeForExtentAndZ(O,w),A={};A[w]={};var k=this.createLoadedTileFinder(v,i,A),j=this.tmpExtent,F=this.tmpTileRange_;this.newTiles_=!1;for(var D=N.minX;D<=N.maxX;++D)for(var G=N.minY;G<=N.maxY;++G){var U=this.getTile(w,D,G,t);if(this.isDrawableTile(U)){var B=Object(g.c)(this);if(U.getState()==l.a.LOADED){A[w][U.tileCoord.toString()]=U;var z=U.inTransition(B);this.newTiles_||!z&&-1!==this.renderedTiles.indexOf(U)||(this.newTiles_=!0)}if(1===U.getAlpha(B,t.time))continue}var V=x.getTileCoordChildTileRange(U.tileCoord,F,j),q=!1;V&&(q=k(w+1,V)),q||x.forEachTileCoordParentTileRange(U.tileCoord,k,F,j)}var Y=E/o;Object(c.b)(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/I,1/I,s,-C/2,-T/2);var W=Object(c.l)(this.pixelTransform);this.useContainer(e,W,r.opacity,this.getBackground(t));var X=this.context,H=X.canvas;Object(c.e)(this.inversePixelTransform,this.pixelTransform),Object(c.b)(this.tempTransform,C/2,T/2,Y,Y,0,-C/2,-T/2),H.width!=C||H.height!=T?(H.width=C,H.height=T):this.containerReused||X.clearRect(0,0,C,T),S&&this.clipUnrotated(X,t,S),v.getInterpolate()||Object(h.a)(X,u.a),this.preRender(X,t),this.renderedTiles.length=0;var Z,K,J,$=Object.keys(A).map(Number);$.sort(y.i),1!==r.opacity||this.containerReused&&!v.getOpaque(t.viewState.projection)?(Z=[],K=[]):$=$.reverse();for(var Q=$.length-1;Q>=0;--Q){var tt=$[Q],et=v.getTilePixelSize(tt,m,i),rt=x.getResolution(tt)/E,nt=et[0]*rt*Y,it=et[1]*rt*Y,ot=x.getTileCoordForCoordAndZ(Object(f.D)(M),tt),at=x.getTileCoordExtent(ot),st=Object(c.a)(this.tempTransform,[I*(at[0]-M[0])/E,I*(M[3]-at[3])/E]),lt=I*v.getGutterForProjection(i),ut=A[tt];for(var ct in ut){var ht=(U=ut[ct]).tileCoord,ft=ot[1]-ht[1],pt=Math.round(st[0]-(ft-1)*nt),dt=ot[2]-ht[2],gt=Math.round(st[1]-(dt-1)*it),yt=pt-(D=Math.round(st[0]-ft*nt)),mt=gt-(G=Math.round(st[1]-dt*it)),_t=w===tt,vt=!1;if(!(z=_t&&1!==U.getAlpha(Object(g.c)(this),t.time)))if(Z){J=[D,G,D+yt,G,D+yt,G+mt,D,G+mt];for(var bt=0,xt=Z.length;bt=a.width)return null;var c=Object(h.A)(o),f=Math.floor(a.height*((o[3]-n[1])/c));return f<0||f>=a.height?null:this.getImageData(a,l,f)},e.prototype.renderFrame=function(t,e){var r=this.image_,n=r.getExtent(),i=r.getResolution(),o=r.getPixelRatio(),a=t.layerStatesArray[t.layerIndex],s=t.pixelRatio,p=t.viewState,d=p.center,g=p.resolution,y=t.size,m=s*i/(g*o),_=Math.round(y[0]*s),v=Math.round(y[1]*s),b=p.rotation;if(b){var x=Math.round(Math.sqrt(_*_+v*v));_=x,v=x}Object(u.b)(this.pixelTransform,t.size[0]/2,t.size[1]/2,1/s,1/s,b,-_/2,-v/2),Object(u.e)(this.inversePixelTransform,this.pixelTransform);var w=Object(u.l)(this.pixelTransform);this.useContainer(e,w,a.opacity,this.getBackground(t));var E=this.context,O=E.canvas;O.width!=_||O.height!=v?(O.width=_,O.height=v):this.containerReused||E.clearRect(0,0,_,v);var S=!1,I=!0;if(a.extent){var C=Object(f.m)(a.extent,p.projection);(S=(I=Object(h.G)(C,t.extent))&&!Object(h.h)(C,t.extent))&&this.clipUnrotated(E,t,C)}var T=r.getImage(),P=Object(u.b)(this.tempTransform,_/2,v/2,m,m,0,o*(n[0]-d[0])/i,o*(d[1]-n[3])/i);this.renderedResolution=i*s/o;var R=T.width*P[0],L=T.height*P[3];if(this.getLayer().getSource().getInterpolate()||Object(c.a)(E,l.a),this.preRender(E,t),I&&R>=.5&&L>=.5){var M=P[4],N=P[5],A=a.opacity,k=void 0;1!==A&&(k=E.globalAlpha,E.globalAlpha=A),E.drawImage(T,0,0,+T.width,+T.height,Math.round(M),Math.round(N),Math.round(R),Math.round(L)),1!==A&&(E.globalAlpha=k)}return this.postRender(E,t),S&&E.restore(),Object(c.a)(E,l.b),w!==O.style.transform&&(O.style.transform=w),this.container},e}(i.a);e.a=d},function(t,e,r){t.exports=function(){"use strict";function t(t,n,i,o,a){!function t(r,n,i,o,a){for(;o>i;){if(o-i>600){var s=o-i+1,l=n-i+1,u=Math.log(s),c=.5*Math.exp(2*u/3),h=.5*Math.sqrt(u*c*(s-c)/s)*(l-s/2<0?-1:1);t(r,n,Math.max(i,Math.floor(n-l*c/s+h)),Math.min(o,Math.floor(n+(s-l)*c/s+h)),a)}var f=r[n],p=i,d=o;for(e(r,i,n),a(r[o],f)>0&&e(r,i,o);p0;)d--}0===a(r[i],f)?e(r,i,d):e(r,++d,o),d<=n&&(i=d+1),n<=d&&(o=d-1)}}(t,n,i||0,o||t.length-1,a||r)}function e(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function r(t,e){return te?1:0}var n=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function i(t,e,r){if(!r)return e.indexOf(t);for(var n=0;n=t.minX&&e.maxY>=t.minY}function d(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function g(e,r,n,i,o){for(var a=[r,n];a.length;)if(!((n=a.pop())-(r=a.pop())<=i)){var s=r+Math.ceil((n-r)/i/2)*i;t(e,s,r,n,o),a.push(r,s,s,n)}}return n.prototype.all=function(){return this._all(this.data,[])},n.prototype.search=function(t){var e=this.data,r=[];if(!p(t,e))return r;for(var n=this.toBBox,i=[];e;){for(var o=0;o=0&&i[e].children.length>this._maxEntries;)this._split(i,e),e--;this._adjustParentBBoxes(n,i,e)},n.prototype._split=function(t,e){var r=t[e],n=r.children.length,i=this._minEntries;this._chooseSplitAxis(r,i,n);var a=this._chooseSplitIndex(r,i,n),s=d(r.children.splice(a,r.children.length-a));s.height=r.height,s.leaf=r.leaf,o(r,this.toBBox),o(s,this.toBBox),e?t[e-1].children.push(s):this._splitRoot(r,s)},n.prototype._splitRoot=function(t,e){this.data=d([t,e]),this.data.height=t.height+1,this.data.leaf=!1,o(this.data,this.toBBox)},n.prototype._chooseSplitIndex=function(t,e,r){for(var n,i,o,s,l,u,h,f=1/0,p=1/0,d=e;d<=r-e;d++){var g=a(t,0,d,this.toBBox),y=a(t,d,r,this.toBBox),m=(i=g,o=y,s=void 0,l=void 0,u=void 0,h=void 0,s=Math.max(i.minX,o.minX),l=Math.max(i.minY,o.minY),u=Math.min(i.maxX,o.maxX),h=Math.min(i.maxY,o.maxY),Math.max(0,u-s)*Math.max(0,h-l)),_=c(g)+c(y);m=e;p--){var d=t.children[p];s(l,t.leaf?i(d):d),u+=h(l)}return u},n.prototype._adjustParentBBoxes=function(t,e,r){for(var n=r;n>=0;n--)s(e[n],t)},n.prototype._condense=function(t){for(var e=t.length-1,r=void 0;e>=0;e--)0===t[e].children.length?e>0?(r=t[e-1].children).splice(r.indexOf(t[e]),1):this.clear():o(t[e],this.toBBox)},n}()},function(t,e,r){"use strict";var n,i=r(69),o=r(14),a=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),s=function(t){function e(e,r,n,i,a){var s=this,l=void 0!==a?o.a.IDLE:o.a.LOADED;return(s=t.call(this,e,r,n,l)||this).loader_=void 0!==a?a:null,s.canvas_=i,s.error_=null,s}return a(e,t),e.prototype.getError=function(){return this.error_},e.prototype.handleLoad_=function(t){t?(this.error_=t,this.state=o.a.ERROR):this.state=o.a.LOADED,this.changed()},e.prototype.load=function(){this.state==o.a.IDLE&&(this.state=o.a.LOADING,this.changed(),this.loader_(this.handleLoad_.bind(this)))},e.prototype.getImage=function(){return this.canvas_},e}(i.a);e.a=s},function(t,e,r){"use strict";(function(t){var n,i,o=r(54),a=r(21),s=r(7),l=r(78),u=r(60),c=r(32),h=r(46),f=r(19),p=r(34),d=r(81),g=r(43),y=r(5),m=r(15),_=r(10),v=r(0),b=r(3),x=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),w=!0;try{new ImageData(10,10)}catch(t){w=!1}function E(t){var e=!0;try{new ImageData(10,10)}catch(t){e=!1}function r(t,r,n){return e?new ImageData(t,r,n):{data:t,width:r,height:n}}return function(e){var n=e.buffers,i=e.meta,o=e.imageOps,a=e.width,s=e.height,l=n.length,u=n[0].byteLength;if(o){for(var c=new Array(l),h=0;hthis._maxQueueLength;)this._queue.shift().callback(null,null)},e.prototype._dispatch=function(){if(!this._running&&0!==this._queue.length){var t=this._queue.shift();this._job=t;var e=t.inputs[0].width,r=t.inputs[0].height,n=t.inputs.map((function(t){return t.data.buffer})),i=this._workers.length;if(this._running=i,1!==i)for(var o=t.inputs[0].data.length,a=4*Math.ceil(o/4/i),s=0;s1?p[p.length-2].toLowerCase():"";if(d==g||d==g.replace("-","")||y+"-"+d==g){l=r[g],p.pop(),y&&g.startsWith(y)&&p.pop();break}}"number"==typeof d&&(l=d);var m=p.join(n).replace("Klokantech Noto Sans","Noto Sans");-1!==m.indexOf(n)&&(m='"'+m+'"'),c.push(m)}s=o[t]=[u,l,c]}return s[0]+n+s[1]+n+e+"px"+(a?"/"+a:"")+n+s[2]}},function(t,e,r){"use strict";var n=r(7),i=r(11),o=r(5),a=1/0,s=function(){function t(t,e){this.priorityFunction_=t,this.keyFunction_=e,this.elements_=[],this.priorities_=[],this.queuedElements_={}}return t.prototype.clear=function(){this.elements_.length=0,this.priorities_.length=0,Object(o.b)(this.queuedElements_)},t.prototype.dequeue=function(){var t=this.elements_,e=this.priorities_,r=t[0];1==t.length?(t.length=0,e.length=0):(t[0]=t.pop(),e[0]=e.pop(),this.siftUp_(0));var n=this.keyFunction_(r);return delete this.queuedElements_[n],r},t.prototype.enqueue=function(t){Object(i.a)(!(this.keyFunction_(t)in this.queuedElements_),31);var e=this.priorityFunction_(t);return e!=a&&(this.elements_.push(t),this.priorities_.push(e),this.queuedElements_[this.keyFunction_(t)]=!0,this.siftDown_(0,this.elements_.length-1),!0)},t.prototype.getCount=function(){return this.elements_.length},t.prototype.getLeftChildIndex_=function(t){return 2*t+1},t.prototype.getRightChildIndex_=function(t){return 2*t+2},t.prototype.getParentIndex_=function(t){return t-1>>1},t.prototype.heapify_=function(){var t;for(t=(this.elements_.length>>1)-1;t>=0;t--)this.siftUp_(t)},t.prototype.isEmpty=function(){return 0===this.elements_.length},t.prototype.isKeyQueued=function(t){return t in this.queuedElements_},t.prototype.isQueued=function(t){return this.isKeyQueued(this.keyFunction_(t))},t.prototype.siftUp_=function(t){for(var e=this.elements_,r=this.priorities_,n=e.length,i=e[t],o=r[t],a=t;t>1;){var s=this.getLeftChildIndex_(t),l=this.getRightChildIndex_(t),u=lt;){var a=this.getParentIndex_(e);if(!(n[a]>o))break;r[e]=r[a],n[e]=n[a],e=a}r[e]=i,n[e]=o},t.prototype.reprioritize=function(){var t,e,r,n=this.priorityFunction_,i=this.elements_,o=this.priorities_,s=0,l=i.length;for(e=0;e0;)n=(r=this.dequeue()[0]).getKey(),r.getState()!==l.a.IDLE||n in this.tilesLoadingKeys_||(this.tilesLoadingKeys_[n]=!0,++this.tilesLoading_,++i,r.load())},e}(s);e.a=h;function f(t,e,r,n,i){if(!t||!(r in t.wantedTiles))return a;if(!t.wantedTiles[r][e.getKey()])return a;var o=t.viewState.center,s=n[0]-o[0],l=n[1]-o[1];return 65536*Math.log(i)+Math.sqrt(s*s+l*l)/i}},function(t,e,r){"use strict";var n=r(0),i=r(1),o=r(4),a=function(){function t(t,e,r,a,s,l){this.sourceProj_=t,this.targetProj_=e;var u={},c=Object(i.q)(this.targetProj_,this.sourceProj_);this.transformInv_=function(t){var e=t[0]+"/"+t[1];return u[e]||(u[e]=c(t)),u[e]},this.maxSourceExtent_=a,this.errorThresholdSquared_=s*s,this.triangles_=[],this.wrapsXInSource_=!1,this.canWrapXInSource_=this.sourceProj_.canWrapX()&&!!a&&!!this.sourceProj_.getExtent()&&Object(n.F)(a)==Object(n.F)(this.sourceProj_.getExtent()),this.sourceWorldWidth_=this.sourceProj_.getExtent()?Object(n.F)(this.sourceProj_.getExtent()):null,this.targetWorldWidth_=this.targetProj_.getExtent()?Object(n.F)(this.targetProj_.getExtent()):null;var h=Object(n.D)(r),f=Object(n.E)(r),p=Object(n.w)(r),d=Object(n.v)(r),g=this.transformInv_(h),y=this.transformInv_(f),m=this.transformInv_(p),_=this.transformInv_(d),v=10+(l?Math.max(0,Math.ceil(Object(o.f)(Object(n.u)(r)/(l*l*256*256)))):0);if(this.addQuad_(h,f,p,d,g,y,m,_,v),this.wrapsXInSource_){var b=1/0;this.triangles_.forEach((function(t,e,r){b=Math.min(b,t.source[0][0],t.source[1][0],t.source[2][0])})),this.triangles_.forEach(function(t){if(Math.max(t.source[0][0],t.source[1][0],t.source[2][0])-b>this.sourceWorldWidth_/2){var e=[[t.source[0][0],t.source[0][1]],[t.source[1][0],t.source[1][1]],[t.source[2][0],t.source[2][1]]];e[0][0]-b>this.sourceWorldWidth_/2&&(e[0][0]-=this.sourceWorldWidth_),e[1][0]-b>this.sourceWorldWidth_/2&&(e[1][0]-=this.sourceWorldWidth_),e[2][0]-b>this.sourceWorldWidth_/2&&(e[2][0]-=this.sourceWorldWidth_);var r=Math.min(e[0][0],e[1][0],e[2][0]);Math.max(e[0][0],e[1][0],e[2][0])-r.5&&f<1,g=!1;if(c>0){if(this.targetProj_.isGlobal()&&this.targetWorldWidth_){var y=Object(n.c)([t,e,r,i]);g=Object(n.F)(y)/this.targetWorldWidth_>.25||g}!d&&this.sourceProj_.isGlobal()&&f&&(g=f>.25||g)}if(!(!g&&this.maxSourceExtent_&&isFinite(h[0])&&isFinite(h[1])&&isFinite(h[2])&&isFinite(h[3]))||Object(n.G)(h,this.maxSourceExtent_)){var m=0;if(!(g||isFinite(a[0])&&isFinite(a[1])&&isFinite(s[0])&&isFinite(s[1])&&isFinite(l[0])&&isFinite(l[1])&&isFinite(u[0])&&isFinite(u[1])))if(c>0)g=!0;else if(1!=(m=(isFinite(a[0])&&isFinite(a[1])?0:8)+(isFinite(s[0])&&isFinite(s[1])?0:4)+(isFinite(l[0])&&isFinite(l[1])?0:2)+(isFinite(u[0])&&isFinite(u[1])?0:1))&&2!=m&&4!=m&&8!=m)return;if(c>0){if(!g){var _=[(t[0]+r[0])/2,(t[1]+r[1])/2],v=this.transformInv_(_),b=void 0;if(d)b=(Object(o.g)(a[0],p)+Object(o.g)(l[0],p))/2-Object(o.g)(v[0],p);else b=(a[0]+l[0])/2-v[0];var x=(a[1]+l[1])/2-v[1];g=b*b+x*x>this.errorThresholdSquared_}if(g){if(Math.abs(t[0]-r[0])<=Math.abs(t[1]-r[1])){var w=[(e[0]+r[0])/2,(e[1]+r[1])/2],E=this.transformInv_(w),O=[(i[0]+t[0])/2,(i[1]+t[1])/2],S=this.transformInv_(O);this.addQuad_(t,e,w,O,a,s,E,S,c-1),this.addQuad_(O,w,r,i,S,E,l,u,c-1)}else{var I=[(t[0]+e[0])/2,(t[1]+e[1])/2],C=this.transformInv_(I),T=[(r[0]+i[0])/2,(r[1]+i[1])/2],P=this.transformInv_(T);this.addQuad_(t,I,T,i,a,C,P,u,c-1),this.addQuad_(I,e,r,T,C,s,l,P,c-1)}return}}if(d){if(!this.canWrapXInSource_)return;this.wrapsXInSource_=!0}0==(11&m)&&this.addTriangle_(t,r,i,a,l,u),0==(14&m)&&this.addTriangle_(t,r,e,a,l,s),m&&(0==(13&m)&&this.addTriangle_(e,i,t,s,u,a),0==(7&m)&&this.addTriangle_(e,i,r,s,u,l))}},t.prototype.calculateSourceExtent=function(){var t=Object(n.k)();return this.triangles_.forEach((function(e,r,i){var o=e.source;Object(n.r)(t,o[0]),Object(n.r)(t,o[1]),Object(n.r)(t,o[2])})),t},t.prototype.getTriangles=function(){return this.triangles_},t}();e.a=a},function(t,e,r){"use strict";var n,i=r(7),o=r(14),a=r(31),s=r(19),l=r(3),u=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),c=function(t){function e(e){var r=t.call(this)||this;return r.ready=!0,r.boundHandleImageChange_=r.handleImageChange_.bind(r),r.layer_=e,r.declutterExecutorGroup=null,r}return u(e,t),e.prototype.getFeatures=function(t){return Object(l.b)()},e.prototype.getData=function(t){return null},e.prototype.prepareFrame=function(t){return Object(l.b)()},e.prototype.renderFrame=function(t,e){return Object(l.b)()},e.prototype.loadedTileCallback=function(t,e,r){t[e]||(t[e]={}),t[e][r.tileCoord.toString()]=r},e.prototype.createLoadedTileFinder=function(t,e,r){return function(n,i){var o=this.loadedTileCallback.bind(this,r,n);return t.forEachLoadedTile(e,n,i,o)}.bind(this)},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i){},e.prototype.getDataAtPixel=function(t,e,r){return null},e.prototype.getLayer=function(){return this.layer_},e.prototype.handleFontsChanged=function(){},e.prototype.handleImageChange_=function(t){t.target.getState()===o.a.LOADED&&this.renderIfReadyAndVisible()},e.prototype.loadImage=function(t){var e=t.getState();return e!=o.a.LOADED&&e!=o.a.ERROR&&t.addEventListener(i.a.CHANGE,this.boundHandleImageChange_),e==o.a.IDLE&&(t.load(),e=t.getState()),e==o.a.LOADED},e.prototype.renderIfReadyAndVisible=function(){var t=this.getLayer();t.getVisible()&&t.getSourceState()==s.a.READY&&t.changed()},e.prototype.disposeInternal=function(){delete this.layer_,t.prototype.disposeInternal.call(this)},e}(a.a);e.a=c},function(t,e,r){"use strict";var n,i=r(38),o=(n=function(t,e){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(t,e)},function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function r(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(r.prototype=e.prototype,new r)}),a=function(t){function e(e){var r=e||{};return t.call(this,r)||this}return o(e,t),e}(i.a);e.a=a},function(t,e){t.exports='{{#*inline "layerswitcherLayer"}}\n {{#each layers}}\n
  • \n
    \n \n
    \n
    \n {{title}}\n
    \n {{#if visible}}\n {{#unless base}}\n
    \n \n \n
    \n {{/unless}}\n
    \n \n
    \n {{/if}}\n
  • \n {{/each}}\n {{/inline}}\n {{#*inline "layerswitcherGroup"}}\n {{#each layerGroups}}\n
  • \n
    \n \n
    \n
    \n {{title}}\n
    \n
    \n \n
    \n {{#unless collapsed}}\n {{#gt layerGroups.length 0}}\n
      \n {{> layerswitcherGroup}}\n
    \n {{/gt}}\n {{#gt layers.length 0}}\n
      \n {{> layerswitcherLayer group=id}}\n
    \n {{/gt}}\n {{/unless}}\n
  • \n {{/each}}\n {{/inline}}\n
    \n
    \n
      \n {{#gt baseLayers.length 0}}\n
    • \n
      Capas base
      \n
        \n {{> layerswitcherLayer layers=baseLayers}}\n
      \n
    • \n {{/gt}}\n {{#gt layerGroups.length 0}}\n
    • \n
      Grupos de capas
      \n
        \n {{> layerswitcherGroup }}\n
      \n
    • \n {{/gt}}\n {{#gt overlayLayers.length 0}}\n
    • \n
      Otras capas
      \n
        \n {{> layerswitcherLayer layers=overlayLayers}}\n
      \n
    • \n {{/gt}}\n
    \n
    \n
    '},function(t,e){ +/*! @petamoriken/float16 v3.6.3 | MIT License - https://git.io/float16 */ +!function(t){"use strict";const e="This constructor is not a subclass of Float16Array",r="The constructor property value is not an object",n="Attempting to access detached ArrayBuffer",i="Cannot convert undefined or null to object",o="Cannot convert a BigInt value to a number",a="Cannot mix BigInt and other types, use explicit conversions",s="@@iterator property is not callable",l="Reduce of empty array with no initial value",u="Offset is out of bounds";function c(t){return(e,...r)=>f(t,e,r)}function h(t,e){return c(y(t,e).get)}const{apply:f,construct:p,defineProperty:d,get:g,getOwnPropertyDescriptor:y,getPrototypeOf:m,has:_,ownKeys:v,set:b,setPrototypeOf:x}=Reflect,w=Proxy,E=Number,{isFinite:O,isNaN:S}=E,{iterator:I,species:C,toStringTag:T,for:P}=Symbol,R=Object,{create:L,defineProperty:M,freeze:N,is:A}=R,k=R.prototype,j=k.__lookupGetter__?c(k.__lookupGetter__):(t,e)=>{if(null==t)throw Pt(i);let r=R(t);do{const t=y(r,e);if(void 0!==t)return F(t,"get")?t.get:void 0}while(null!==(r=m(r)))},F=R.hasOwn||c(k.hasOwnProperty),D=Array,G=D.isArray,U=D.prototype,B=c(U.join),z=c(U.push),V=c(U.toLocaleString),q=U[I],Y=c(q),W=Math.trunc,X=ArrayBuffer,H=X.isView,Z=X.prototype,K=c(Z.slice),J=h(Z,"byteLength"),$="undefined"!=typeof SharedArrayBuffer?SharedArrayBuffer:null,Q=$&&h($.prototype,"byteLength"),tt=m(Uint8Array),et=tt.from,rt=tt.prototype,nt=rt[I],it=c(rt.keys),ot=c(rt.values),at=c(rt.entries),st=c(rt.set),lt=c(rt.reverse),ut=c(rt.fill),ct=c(rt.copyWithin),ht=c(rt.sort),ft=c(rt.slice),pt=c(rt.subarray),dt=h(rt,"buffer"),gt=h(rt,"byteOffset"),yt=h(rt,"length"),mt=h(rt,T),_t=Uint16Array,vt=(...t)=>f(et,_t,t),bt=Uint32Array,xt=Float32Array,wt=m([][I]()),Et=c(wt.next),Ot=c(function*(){}().next),St=m(wt),It=DataView.prototype,Ct=c(It.getUint16),Tt=c(It.setUint16),Pt=TypeError,Rt=RangeError,Lt=WeakSet,Mt=Lt.prototype,Nt=c(Mt.add),At=c(Mt.has),kt=WeakMap,jt=kt.prototype,Ft=c(jt.get),Dt=c(jt.has),Gt=c(jt.set),Ut=new kt,Bt=L(null,{next:{value:function(){const t=Ft(Ut,this);return Et(t)}},[I]:{value:function(){return this}}});function zt(t){if(t[I]===q)return t;const e=L(Bt);return Gt(Ut,e,Y(t)),e}const Vt=new kt,qt=L(St,{next:{value:function(){const t=Ft(Vt,this);return Ot(t)},writable:!0,configurable:!0}});for(const t of v(wt))"next"!==t&&M(qt,t,y(wt,t));function Yt(t){const e=L(qt);return Gt(Vt,e,t),e}function Wt(t){return null!==t&&"object"==typeof t||"function"==typeof t}function Xt(t){return null!==t&&"object"==typeof t}function Ht(t){return void 0!==mt(t)}function Zt(t){const e=mt(t);return"BigInt64Array"===e||"BigUint64Array"===e}function Kt(t){if(null===$)return!1;try{return Q(t),!0}catch(t){return!1}}function Jt(t){if(!G(t))return!1;if(t[I]===q)return!0;return"Array Iterator"===t[I]()[T]}function $t(t){if("string"!=typeof t)return!1;const e=E(t);return t===e+""&&(!!O(e)&&e===W(e))}const Qt=P("__Float16Array__");const te=new X(4),ee=new xt(te),re=new bt(te),ne=new bt(512),ie=new bt(512);for(let t=0;t<256;++t){const e=t-127;e<-27?(ne[t]=0,ne[256|t]=32768,ie[t]=24,ie[256|t]=24):e<-14?(ne[t]=1024>>-e-14,ne[256|t]=1024>>-e-14|32768,ie[t]=-e-1,ie[256|t]=-e-1):e<=15?(ne[t]=e+15<<10,ne[256|t]=e+15<<10|32768,ie[t]=13,ie[256|t]=13):e<128?(ne[t]=31744,ne[256|t]=64512,ie[t]=24,ie[256|t]=24):(ne[t]=31744,ne[256|t]=64512,ie[t]=13,ie[256|t]=13)}function oe(t){ee[0]=t;const e=re[0],r=e>>23&511;return ne[r]+((8388607&e)>>ie[r])}const ae=new bt(2048),se=new bt(64),le=new bt(64);for(let t=1;t<1024;++t){let e=t<<13,r=0;for(;0==(8388608&e);)e<<=1,r-=8388608;e&=-8388609,r+=947912704,ae[t]=e|r}for(let t=1024;t<2048;++t)ae[t]=939524096+(t-1024<<13);for(let t=1;t<31;++t)se[t]=t<<23;se[31]=1199570944,se[32]=2147483648;for(let t=33;t<63;++t)se[t]=2147483648+(t-32<<23);se[63]=3347054592;for(let t=1;t<64;++t)32!==t&&(le[t]=1024);function ue(t){const e=t>>10;return re[0]=ae[le[e]+(1023&t)]+se[e],ee[0]}const ce=E.MAX_SAFE_INTEGER;function he(t){if("bigint"==typeof t)throw Pt(o);const e=E(t);return S(e)||0===e?0:W(e)}function fe(t){const e=he(t);return e<0?0:ee)return 1;if(0===t&&0===e){const r=A(t,0),n=A(e,0);if(!r&&n)return-1;if(r&&!n)return 1}return 0}const ye=new kt;function me(t){return Dt(ye,t)||!H(t)&&function(t){if(!Xt(t))return!1;const e=m(t);if(!Xt(e))return!1;const n=e.constructor;if(void 0===n)return!1;if(!Wt(n))throw Pt(r);return _(n,Qt)}(t)}function _e(t){if(!me(t))throw Pt("This is not a Float16Array object")}function ve(t,e){const r=me(t),n=Ht(t);if(!r&&!n)throw Pt("Species constructor didn't return TypedArray object");if("number"==typeof e){let n;if(r){const e=be(t);n=yt(e)}else n=yt(t);if(n$t(e)&&F(t,e)?ue(g(t,e)):At(we,j(t,e))?g(t,e):g(t,e,r),set:(t,e,r,n)=>$t(e)&&F(t,e)?b(t,e,oe(r)):b(t,e,r,n),getOwnPropertyDescriptor(t,e){if($t(e)&&F(t,e)){const r=y(t,e);return r.value=ue(r.value),r}return y(t,e)},defineProperty:(t,e,r)=>$t(e)&&F(t,e)&&F(r,"value")?(r.value=oe(r.value),d(t,e,r)):d(t,e,r)});class Oe{constructor(t,e,r){let i;if(me(t))i=p(_t,[be(t)],new.target);else if(Wt(t)&&!function(t){try{return J(t),!0}catch(t){return!1}}(t)){let e,r;if(Ht(t)){e=t,r=yt(t);const o=dt(t),s=Kt(o)?X:pe(o,X);if(de(o))throw Pt(n);if(Zt(t))throw Pt(a);const l=new s(2*r);i=p(_t,[l],new.target)}else{const n=t[I];if(null!=n&&"function"!=typeof n)throw Pt(s);null!=n?Jt(t)?(e=t,r=t.length):(e=[...t],r=e.length):(e=t,r=fe(e.length)),i=p(_t,[r],new.target)}for(let t=0;t=0?n:r+n;if(!(i<0||i>=r))return ue(e[i])}map(t,...e){_e(this);const r=be(this),n=yt(r),i=e[0],o=pe(r,Oe);if(o===Oe){const e=new Oe(n),o=be(e);for(let e=0;e=0;--e)i=t(i,ue(r[e]),e,this);return i}forEach(t,...e){_e(this);const r=be(this),n=yt(r),i=e[0];for(let e=0;e=0;--e){const n=ue(r[e]);if(f(t,i,[n,e,this]))return n}}findLastIndex(t,...e){_e(this);const r=be(this),n=yt(r),i=e[0];for(let e=n-1;e>=0;--e){const n=ue(r[e]);if(f(t,i,[n,e,this]))return e}return-1}every(t,...e){_e(this);const r=be(this),n=yt(r),i=e[0];for(let e=0;es)throw Rt(u);for(let t=0;tr(ue(t),ue(e))),this}slice(...t){_e(this);const e=be(this),r=pe(e,Oe);if(r===Oe){const r=new _t(dt(e),gt(e),yt(e));return new Oe(dt(ft(r,...zt(t))))}const i=yt(e),o=he(t[0]),a=void 0===t[1]?i:he(t[1]);let s,l;s=o===-1/0?0:o<0?i+o>0?i+o:0:i0?i+a:0:i0?l-s:0,c=new r(u);if(ve(c,u),0===u)return c;if(de(dt(e)))throw Pt(n);let h=0;for(;s=1?he(e[0]):n-1;if(i===-1/0)return-1;i>=0?i=i=0;--e)if(F(r,e)&&ue(r[e])===t)return e;return-1}includes(t,...e){_e(this);const r=be(this),n=yt(r);let i=he(e[0]);if(i===1/0)return!1;i<0&&(i+=n,i<0&&(i=0));const o=S(t);for(let e=i;e=0;)t[e]=0}const i=256,o=286,a=30,s=15,l=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),u=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),c=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),h=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),f=new Array(576);n(f);const p=new Array(60);n(p);const d=new Array(512);n(d);const g=new Array(256);n(g);const y=new Array(29);n(y);const m=new Array(a);function _(t,e,r,n,i){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=t&&t.length}let v,b,x;function w(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}n(m);const E=t=>t<256?d[t]:d[256+(t>>>7)],O=(t,e)=>{t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255},S=(t,e,r)=>{t.bi_valid>16-r?(t.bi_buf|=e<>16-t.bi_valid,t.bi_valid+=r-16):(t.bi_buf|=e<{S(t,r[2*e],r[2*e+1])},C=(t,e)=>{let r=0;do{r|=1&t,t>>>=1,r<<=1}while(--e>0);return r>>>1},T=(t,e,r)=>{const n=new Array(16);let i,o,a=0;for(i=1;i<=s;i++)n[i]=a=a+r[i-1]<<1;for(o=0;o<=e;o++){let e=t[2*o+1];0!==e&&(t[2*o]=C(n[e]++,e))}},P=t=>{let e;for(e=0;e{t.bi_valid>8?O(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0},L=(t,e,r,n)=>{const i=2*e,o=2*r;return t[i]{const n=t.heap[r];let i=r<<1;for(;i<=t.heap_len&&(i{let n,o,a,s,c=0;if(0!==t.last_lit)do{n=t.pending_buf[t.d_buf+2*c]<<8|t.pending_buf[t.d_buf+2*c+1],o=t.pending_buf[t.l_buf+c],c++,0===n?I(t,o,e):(a=g[o],I(t,a+i+1,e),s=l[a],0!==s&&(o-=y[a],S(t,o,s)),n--,a=E(n),I(t,a,r),s=u[a],0!==s&&(n-=m[a],S(t,n,s)))}while(c{const r=e.dyn_tree,n=e.stat_desc.static_tree,i=e.stat_desc.has_stree,o=e.stat_desc.elems;let a,l,u,c=-1;for(t.heap_len=0,t.heap_max=573,a=0;a>1;a>=1;a--)M(t,r,a);u=o;do{a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],M(t,r,1),l=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=l,r[2*u]=r[2*a]+r[2*l],t.depth[u]=(t.depth[a]>=t.depth[l]?t.depth[a]:t.depth[l])+1,r[2*a+1]=r[2*l+1]=u,t.heap[1]=u++,M(t,r,1)}while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],((t,e)=>{const r=e.dyn_tree,n=e.max_code,i=e.stat_desc.static_tree,o=e.stat_desc.has_stree,a=e.stat_desc.extra_bits,l=e.stat_desc.extra_base,u=e.stat_desc.max_length;let c,h,f,p,d,g,y=0;for(p=0;p<=s;p++)t.bl_count[p]=0;for(r[2*t.heap[t.heap_max]+1]=0,c=t.heap_max+1;c<573;c++)h=t.heap[c],p=r[2*r[2*h+1]+1]+1,p>u&&(p=u,y++),r[2*h+1]=p,h>n||(t.bl_count[p]++,d=0,h>=l&&(d=a[h-l]),g=r[2*h],t.opt_len+=g*(p+d),o&&(t.static_len+=g*(i[2*h+1]+d)));if(0!==y){do{for(p=u-1;0===t.bl_count[p];)p--;t.bl_count[p]--,t.bl_count[p+1]+=2,t.bl_count[u]--,y-=2}while(y>0);for(p=u;0!==p;p--)for(h=t.bl_count[p];0!==h;)f=t.heap[--c],f>n||(r[2*f+1]!==p&&(t.opt_len+=(p-r[2*f+1])*r[2*f],r[2*f+1]=p),h--)}})(t,e),T(r,c,t.bl_count)},k=(t,e,r)=>{let n,i,o=-1,a=e[1],s=0,l=7,u=4;for(0===a&&(l=138,u=3),e[2*(r+1)+1]=65535,n=0;n<=r;n++)i=a,a=e[2*(n+1)+1],++s{let n,i,o=-1,a=e[1],s=0,l=7,u=4;for(0===a&&(l=138,u=3),n=0;n<=r;n++)if(i=a,a=e[2*(n+1)+1],!(++s{S(t,0+(n?1:0),3),((t,e,r,n)=>{R(t),n&&(O(t,r),O(t,~r)),t.pending_buf.set(t.window.subarray(e,e+r),t.pending),t.pending+=r})(t,e,r,!0)};var G={_tr_init:t=>{F||((()=>{let t,e,r,n,i;const h=new Array(16);for(r=0,n=0;n<28;n++)for(y[n]=r,t=0;t<1<>=7;n{let o,a,s=0;t.level>0?(2===t.strm.data_type&&(t.strm.data_type=(t=>{let e,r=4093624447;for(e=0;e<=31;e++,r>>>=1)if(1&r&&0!==t.dyn_ltree[2*e])return 0;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return 1;for(e=32;e{let e;for(k(t,t.dyn_ltree,t.l_desc.max_code),k(t,t.dyn_dtree,t.d_desc.max_code),A(t,t.bl_desc),e=18;e>=3&&0===t.bl_tree[2*h[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e})(t),o=t.opt_len+3+7>>>3,a=t.static_len+3+7>>>3,a<=o&&(o=a)):o=a=r+5,r+4<=o&&-1!==e?D(t,e,r,n):4===t.strategy||a===o?(S(t,2+(n?1:0),3),N(t,f,p)):(S(t,4+(n?1:0),3),((t,e,r,n)=>{let i;for(S(t,e-257,5),S(t,r-1,5),S(t,n-4,4),i=0;i(t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&r,t.last_lit++,0===e?t.dyn_ltree[2*r]++:(t.matches++,e--,t.dyn_ltree[2*(g[r]+i+1)]++,t.dyn_dtree[2*E(e)]++),t.last_lit===t.lit_bufsize-1),_tr_align:t=>{S(t,2,3),I(t,256,f),(t=>{16===t.bi_valid?(O(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=255&t.bi_buf,t.bi_buf>>=8,t.bi_valid-=8)})(t)}};var U=(t,e,r,n)=>{let i=65535&t|0,o=t>>>16&65535|0,a=0;for(;0!==r;){a=r>2e3?2e3:r,r-=a;do{i=i+e[n++]|0,o=o+i|0}while(--a);i%=65521,o%=65521}return i|o<<16|0};const B=new Uint32Array((()=>{let t,e=[];for(var r=0;r<256;r++){t=r;for(var n=0;n<8;n++)t=1&t?3988292384^t>>>1:t>>>1;e[r]=t}return e})());var z=(t,e,r,n)=>{const i=B,o=n+r;t^=-1;for(let r=n;r>>8^i[255&(t^e[r])];return-1^t},V={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},q={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:Y,_tr_stored_block:W,_tr_flush_block:X,_tr_tally:H,_tr_align:Z}=G,{Z_NO_FLUSH:K,Z_PARTIAL_FLUSH:J,Z_FULL_FLUSH:$,Z_FINISH:Q,Z_BLOCK:tt,Z_OK:et,Z_STREAM_END:rt,Z_STREAM_ERROR:nt,Z_DATA_ERROR:it,Z_BUF_ERROR:ot,Z_DEFAULT_COMPRESSION:at,Z_FILTERED:st,Z_HUFFMAN_ONLY:lt,Z_RLE:ut,Z_FIXED:ct,Z_DEFAULT_STRATEGY:ht,Z_UNKNOWN:ft,Z_DEFLATED:pt}=q,dt=258,gt=262,yt=103,mt=113,_t=666,vt=(t,e)=>(t.msg=V[e],e),bt=t=>(t<<1)-(t>4?9:0),xt=t=>{let e=t.length;for(;--e>=0;)t[e]=0};let wt=(t,e,r)=>(e<{const e=t.state;let r=e.pending;r>t.avail_out&&(r=t.avail_out),0!==r&&(t.output.set(e.pending_buf.subarray(e.pending_out,e.pending_out+r),t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,0===e.pending&&(e.pending_out=0))},Ot=(t,e)=>{X(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,Et(t.strm)},St=(t,e)=>{t.pending_buf[t.pending++]=e},It=(t,e)=>{t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e},Ct=(t,e,r,n)=>{let i=t.avail_in;return i>n&&(i=n),0===i?0:(t.avail_in-=i,e.set(t.input.subarray(t.next_in,t.next_in+i),r),1===t.state.wrap?t.adler=U(t.adler,e,i,r):2===t.state.wrap&&(t.adler=z(t.adler,e,i,r)),t.next_in+=i,t.total_in+=i,i)},Tt=(t,e)=>{let r,n,i=t.max_chain_length,o=t.strstart,a=t.prev_length,s=t.nice_match;const l=t.strstart>t.w_size-gt?t.strstart-(t.w_size-gt):0,u=t.window,c=t.w_mask,h=t.prev,f=t.strstart+dt;let p=u[o+a-1],d=u[o+a];t.prev_length>=t.good_match&&(i>>=2),s>t.lookahead&&(s=t.lookahead);do{if(r=e,u[r+a]===d&&u[r+a-1]===p&&u[r]===u[o]&&u[++r]===u[o+1]){o+=2,r++;do{}while(u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&oa){if(t.match_start=e,a=n,n>=s)break;p=u[o+a-1],d=u[o+a]}}}while((e=h[e&c])>l&&0!=--i);return a<=t.lookahead?a:t.lookahead},Pt=t=>{const e=t.w_size;let r,n,i,o,a;do{if(o=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-gt)){t.window.set(t.window.subarray(e,e+e),0),t.match_start-=e,t.strstart-=e,t.block_start-=e,n=t.hash_size,r=n;do{i=t.head[--r],t.head[r]=i>=e?i-e:0}while(--n);n=e,r=n;do{i=t.prev[--r],t.prev[r]=i>=e?i-e:0}while(--n);o+=e}if(0===t.strm.avail_in)break;if(n=Ct(t.strm,t.window,t.strstart+t.lookahead,o),t.lookahead+=n,t.lookahead+t.insert>=3)for(a=t.strstart-t.insert,t.ins_h=t.window[a],t.ins_h=wt(t,t.ins_h,t.window[a+1]);t.insert&&(t.ins_h=wt(t,t.ins_h,t.window[a+3-1]),t.prev[a&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=a,a++,t.insert--,!(t.lookahead+t.insert<3)););}while(t.lookahead{let r,n;for(;;){if(t.lookahead=3&&(t.ins_h=wt(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==r&&t.strstart-r<=t.w_size-gt&&(t.match_length=Tt(t,r)),t.match_length>=3)if(n=H(t,t.strstart-t.match_start,t.match_length-3),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=3){t.match_length--;do{t.strstart++,t.ins_h=wt(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart}while(0!=--t.match_length);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=wt(t,t.ins_h,t.window[t.strstart+1]);else n=H(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(n&&(Ot(t,!1),0===t.strm.avail_out))return 1}return t.insert=t.strstart<2?t.strstart:2,e===Q?(Ot(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ot(t,!1),0===t.strm.avail_out)?1:2},Lt=(t,e)=>{let r,n,i;for(;;){if(t.lookahead=3&&(t.ins_h=wt(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=2,0!==r&&t.prev_length4096)&&(t.match_length=2)),t.prev_length>=3&&t.match_length<=t.prev_length){i=t.strstart+t.lookahead-3,n=H(t,t.strstart-1-t.prev_match,t.prev_length-3),t.lookahead-=t.prev_length-1,t.prev_length-=2;do{++t.strstart<=i&&(t.ins_h=wt(t,t.ins_h,t.window[t.strstart+3-1]),r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart)}while(0!=--t.prev_length);if(t.match_available=0,t.match_length=2,t.strstart++,n&&(Ot(t,!1),0===t.strm.avail_out))return 1}else if(t.match_available){if(n=H(t,0,t.window[t.strstart-1]),n&&Ot(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return 1}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(n=H(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<2?t.strstart:2,e===Q?(Ot(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ot(t,!1),0===t.strm.avail_out)?1:2};function Mt(t,e,r,n,i){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=n,this.func=i}const Nt=[new Mt(0,0,0,0,(t,e)=>{let r=65535;for(r>t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(Pt(t),0===t.lookahead&&e===K)return 1;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;const n=t.block_start+r;if((0===t.strstart||t.strstart>=n)&&(t.lookahead=t.strstart-n,t.strstart=n,Ot(t,!1),0===t.strm.avail_out))return 1;if(t.strstart-t.block_start>=t.w_size-gt&&(Ot(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Q?(Ot(t,!0),0===t.strm.avail_out?3:4):(t.strstart>t.block_start&&(Ot(t,!1),t.strm.avail_out),1)}),new Mt(4,4,8,4,Rt),new Mt(4,5,16,8,Rt),new Mt(4,6,32,32,Rt),new Mt(4,4,16,16,Lt),new Mt(8,16,32,32,Lt),new Mt(8,16,128,128,Lt),new Mt(8,32,128,256,Lt),new Mt(32,128,258,1024,Lt),new Mt(32,258,258,4096,Lt)];function At(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=pt,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),xt(this.dyn_ltree),xt(this.dyn_dtree),xt(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),xt(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),xt(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const kt=t=>{if(!t||!t.state)return vt(t,nt);t.total_in=t.total_out=0,t.data_type=ft;const e=t.state;return e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?42:mt,t.adler=2===e.wrap?0:1,e.last_flush=K,Y(e),et},jt=t=>{const e=kt(t);var r;return e===et&&((r=t.state).window_size=2*r.w_size,xt(r.head),r.max_lazy_match=Nt[r.level].max_lazy,r.good_match=Nt[r.level].good_length,r.nice_match=Nt[r.level].nice_length,r.max_chain_length=Nt[r.level].max_chain,r.strstart=0,r.block_start=0,r.lookahead=0,r.insert=0,r.match_length=r.prev_length=2,r.match_available=0,r.ins_h=0),e},Ft=(t,e,r,n,i,o)=>{if(!t)return nt;let a=1;if(e===at&&(e=6),n<0?(a=0,n=-n):n>15&&(a=2,n-=16),i<1||i>9||r!==pt||n<8||n>15||e<0||e>9||o<0||o>ct)return vt(t,nt);8===n&&(n=9);const s=new At;return t.state=s,s.strm=t,s.wrap=a,s.gzhead=null,s.w_bits=n,s.w_size=1<Ft(t,e,pt,15,8,ht),deflateInit2:Ft,deflateReset:jt,deflateResetKeep:kt,deflateSetHeader:(t,e)=>t&&t.state?2!==t.state.wrap?nt:(t.state.gzhead=e,et):nt,deflate:(t,e)=>{let r,n;if(!t||!t.state||e>tt||e<0)return t?vt(t,nt):nt;const i=t.state;if(!t.output||!t.input&&0!==t.avail_in||i.status===_t&&e!==Q)return vt(t,0===t.avail_out?ot:nt);i.strm=t;const o=i.last_flush;if(i.last_flush=e,42===i.status)if(2===i.wrap)t.adler=0,St(i,31),St(i,139),St(i,8),i.gzhead?(St(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),St(i,255&i.gzhead.time),St(i,i.gzhead.time>>8&255),St(i,i.gzhead.time>>16&255),St(i,i.gzhead.time>>24&255),St(i,9===i.level?2:i.strategy>=lt||i.level<2?4:0),St(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(St(i,255&i.gzhead.extra.length),St(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=z(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(St(i,0),St(i,0),St(i,0),St(i,0),St(i,0),St(i,9===i.level?2:i.strategy>=lt||i.level<2?4:0),St(i,3),i.status=mt);else{let e=pt+(i.w_bits-8<<4)<<8,r=-1;r=i.strategy>=lt||i.level<2?0:i.level<6?1:6===i.level?2:3,e|=r<<6,0!==i.strstart&&(e|=32),e+=31-e%31,i.status=mt,It(i,e),0!==i.strstart&&(It(i,t.adler>>>16),It(i,65535&t.adler)),t.adler=1}if(69===i.status)if(i.gzhead.extra){for(r=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>r&&(t.adler=z(t.adler,i.pending_buf,i.pending-r,r)),Et(t),r=i.pending,i.pending!==i.pending_buf_size));)St(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>r&&(t.adler=z(t.adler,i.pending_buf,i.pending-r,r)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(t.adler=z(t.adler,i.pending_buf,i.pending-r,r)),Et(t),r=i.pending,i.pending===i.pending_buf_size)){n=1;break}n=i.gzindexr&&(t.adler=z(t.adler,i.pending_buf,i.pending-r,r)),0===n&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){r=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>r&&(t.adler=z(t.adler,i.pending_buf,i.pending-r,r)),Et(t),r=i.pending,i.pending===i.pending_buf_size)){n=1;break}n=i.gzindexr&&(t.adler=z(t.adler,i.pending_buf,i.pending-r,r)),0===n&&(i.status=yt)}else i.status=yt;if(i.status===yt&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&Et(t),i.pending+2<=i.pending_buf_size&&(St(i,255&t.adler),St(i,t.adler>>8&255),t.adler=0,i.status=mt)):i.status=mt),0!==i.pending){if(Et(t),0===t.avail_out)return i.last_flush=-1,et}else if(0===t.avail_in&&bt(e)<=bt(o)&&e!==Q)return vt(t,ot);if(i.status===_t&&0!==t.avail_in)return vt(t,ot);if(0!==t.avail_in||0!==i.lookahead||e!==K&&i.status!==_t){let r=i.strategy===lt?((t,e)=>{let r;for(;;){if(0===t.lookahead&&(Pt(t),0===t.lookahead)){if(e===K)return 1;break}if(t.match_length=0,r=H(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(Ot(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Q?(Ot(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ot(t,!1),0===t.strm.avail_out)?1:2})(i,e):i.strategy===ut?((t,e)=>{let r,n,i,o;const a=t.window;for(;;){if(t.lookahead<=dt){if(Pt(t),t.lookahead<=dt&&e===K)return 1;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=3&&t.strstart>0&&(i=t.strstart-1,n=a[i],n===a[++i]&&n===a[++i]&&n===a[++i])){o=t.strstart+dt;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&it.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=3?(r=H(t,1,t.match_length-3),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=H(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(Ot(t,!1),0===t.strm.avail_out))return 1}return t.insert=0,e===Q?(Ot(t,!0),0===t.strm.avail_out?3:4):t.last_lit&&(Ot(t,!1),0===t.strm.avail_out)?1:2})(i,e):Nt[i.level].func(i,e);if(3!==r&&4!==r||(i.status=_t),1===r||3===r)return 0===t.avail_out&&(i.last_flush=-1),et;if(2===r&&(e===J?Z(i):e!==tt&&(W(i,0,0,!1),e===$&&(xt(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),Et(t),0===t.avail_out))return i.last_flush=-1,et}return e!==Q?et:i.wrap<=0?rt:(2===i.wrap?(St(i,255&t.adler),St(i,t.adler>>8&255),St(i,t.adler>>16&255),St(i,t.adler>>24&255),St(i,255&t.total_in),St(i,t.total_in>>8&255),St(i,t.total_in>>16&255),St(i,t.total_in>>24&255)):(It(i,t.adler>>>16),It(i,65535&t.adler)),Et(t),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?et:rt)},deflateEnd:t=>{if(!t||!t.state)return nt;const e=t.state.status;return 42!==e&&69!==e&&73!==e&&91!==e&&e!==yt&&e!==mt&&e!==_t?vt(t,nt):(t.state=null,e===mt?vt(t,it):et)},deflateSetDictionary:(t,e)=>{let r=e.length;if(!t||!t.state)return nt;const n=t.state,i=n.wrap;if(2===i||1===i&&42!==n.status||n.lookahead)return nt;if(1===i&&(t.adler=U(t.adler,e,r,0)),n.wrap=0,r>=n.w_size){0===i&&(xt(n.head),n.strstart=0,n.block_start=0,n.insert=0);let t=new Uint8Array(n.w_size);t.set(e.subarray(r-n.w_size,r),0),e=t,r=n.w_size}const o=t.avail_in,a=t.next_in,s=t.input;for(t.avail_in=r,t.next_in=0,t.input=e,Pt(n);n.lookahead>=3;){let t=n.strstart,e=n.lookahead-2;do{n.ins_h=wt(n,n.ins_h,n.window[t+3-1]),n.prev[t&n.w_mask]=n.head[n.ins_h],n.head[n.ins_h]=t,t++}while(--e);n.strstart=t,n.lookahead=2,Pt(n)}return n.strstart+=n.lookahead,n.block_start=n.strstart,n.insert=n.lookahead,n.lookahead=0,n.match_length=n.prev_length=2,n.match_available=0,t.next_in=a,t.input=s,t.avail_in=o,n.wrap=i,et},deflateInfo:"pako deflate (from Nodeca project)"};const Gt=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var Ut=function(t){const e=Array.prototype.slice.call(arguments,1);for(;e.length;){const r=e.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(const e in r)Gt(r,e)&&(t[e]=r[e])}}return t},Bt=t=>{let e=0;for(let r=0,n=t.length;r=252?6:t>=248?5:t>=240?4:t>=224?3:t>=192?2:1;Vt[254]=Vt[254]=1;var qt=t=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(t);let e,r,n,i,o,a=t.length,s=0;for(i=0;i>>6,e[o++]=128|63&r):r<65536?(e[o++]=224|r>>>12,e[o++]=128|r>>>6&63,e[o++]=128|63&r):(e[o++]=240|r>>>18,e[o++]=128|r>>>12&63,e[o++]=128|r>>>6&63,e[o++]=128|63&r);return e},Yt=(t,e)=>{const r=e||t.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(t.subarray(0,e));let n,i;const o=new Array(2*r);for(i=0,n=0;n4)o[i++]=65533,n+=a-1;else{for(e&=2===a?31:3===a?15:7;a>1&&n1?o[i++]=65533:e<65536?o[i++]=e:(e-=65536,o[i++]=55296|e>>10&1023,o[i++]=56320|1023&e)}}return((t,e)=>{if(e<65534&&t.subarray&&zt)return String.fromCharCode.apply(null,t.length===e?t:t.subarray(0,e));let r="";for(let n=0;n{(e=e||t.length)>t.length&&(e=t.length);let r=e-1;for(;r>=0&&128==(192&t[r]);)r--;return r<0||0===r?e:r+Vt[t[r]]>e?r:e};var Xt=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ht=Object.prototype.toString,{Z_NO_FLUSH:Zt,Z_SYNC_FLUSH:Kt,Z_FULL_FLUSH:Jt,Z_FINISH:$t,Z_OK:Qt,Z_STREAM_END:te,Z_DEFAULT_COMPRESSION:ee,Z_DEFAULT_STRATEGY:re,Z_DEFLATED:ne}=q;function ie(t){this.options=Ut({level:ee,method:ne,chunkSize:16384,windowBits:15,memLevel:8,strategy:re},t||{});let e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xt,this.strm.avail_out=0;let r=Dt.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==Qt)throw new Error(V[r]);if(e.header&&Dt.deflateSetHeader(this.strm,e.header),e.dictionary){let t;if(t="string"==typeof e.dictionary?qt(e.dictionary):"[object ArrayBuffer]"===Ht.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,r=Dt.deflateSetDictionary(this.strm,t),r!==Qt)throw new Error(V[r]);this._dict_set=!0}}function oe(t,e){const r=new ie(e);if(r.push(t,!0),r.err)throw r.msg||V[r.err];return r.result}ie.prototype.push=function(t,e){const r=this.strm,n=this.options.chunkSize;let i,o;if(this.ended)return!1;for(o=e===~~e?e:!0===e?$t:Zt,"string"==typeof t?r.input=qt(t):"[object ArrayBuffer]"===Ht.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;)if(0===r.avail_out&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),(o===Kt||o===Jt)&&r.avail_out<=6)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else{if(i=Dt.deflate(r,o),i===te)return r.next_out>0&&this.onData(r.output.subarray(0,r.next_out)),i=Dt.deflateEnd(this.strm),this.onEnd(i),this.ended=!0,i===Qt;if(0!==r.avail_out){if(o>0&&r.next_out>0)this.onData(r.output.subarray(0,r.next_out)),r.avail_out=0;else if(0===r.avail_in)break}else this.onData(r.output)}return!0},ie.prototype.onData=function(t){this.chunks.push(t)},ie.prototype.onEnd=function(t){t===Qt&&(this.result=Bt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var ae={Deflate:ie,deflate:oe,deflateRaw:function(t,e){return(e=e||{}).raw=!0,oe(t,e)},gzip:function(t,e){return(e=e||{}).gzip=!0,oe(t,e)},constants:q};var se=function(t,e){let r,n,i,o,a,s,l,u,c,h,f,p,d,g,y,m,_,v,b,x,w,E,O,S;const I=t.state;r=t.next_in,O=t.input,n=r+(t.avail_in-5),i=t.next_out,S=t.output,o=i-(e-t.avail_out),a=i+(t.avail_out-257),s=I.dmax,l=I.wsize,u=I.whave,c=I.wnext,h=I.window,f=I.hold,p=I.bits,d=I.lencode,g=I.distcode,y=(1<>>24,f>>>=v,p-=v,v=_>>>16&255,0===v)S[i++]=65535&_;else{if(!(16&v)){if(0==(64&v)){_=d[(65535&_)+(f&(1<>>=v,p-=v),p<15&&(f+=O[r++]<>>24,f>>>=v,p-=v,v=_>>>16&255,!(16&v)){if(0==(64&v)){_=g[(65535&_)+(f&(1<s){t.msg="invalid distance too far back",I.mode=30;break t}if(f>>>=v,p-=v,v=i-o,x>v){if(v=x-v,v>u&&I.sane){t.msg="invalid distance too far back",I.mode=30;break t}if(w=0,E=h,0===c){if(w+=l-v,v2;)S[i++]=E[w++],S[i++]=E[w++],S[i++]=E[w++],b-=3;b&&(S[i++]=E[w++],b>1&&(S[i++]=E[w++]))}else{w=i-x;do{S[i++]=S[w++],S[i++]=S[w++],S[i++]=S[w++],b-=3}while(b>2);b&&(S[i++]=S[w++],b>1&&(S[i++]=S[w++]))}break}}break}}while(r>3,r-=b,p-=b<<3,f&=(1<{const l=s.bits;let u,c,h,f,p,d,g=0,y=0,m=0,_=0,v=0,b=0,x=0,w=0,E=0,O=0,S=null,I=0;const C=new Uint16Array(16),T=new Uint16Array(16);let P,R,L,M=null,N=0;for(g=0;g<=le;g++)C[g]=0;for(y=0;y=1&&0===C[_];_--);if(v>_&&(v=_),0===_)return i[o++]=20971520,i[o++]=20971520,s.bits=1,0;for(m=1;m<_&&0===C[m];m++);for(v0&&(0===t||1!==_))return-1;for(T[1]=0,g=1;g852||2===t&&E>592)return 1;for(;;){P=g-x,a[y]d?(R=M[N+a[y]],L=S[I+a[y]]):(R=96,L=0),u=1<>x)+c]=P<<24|R<<16|L|0}while(0!==c);for(u=1<>=1;if(0!==u?(O&=u-1,O+=u):O=0,y++,0==--C[g]){if(g===_)break;g=e[r+a[y]]}if(g>v&&(O&f)!==h){for(0===x&&(x=v),p+=m,b=g-x,w=1<852||2===t&&E>592)return 1;h=O&f,i[h]=v<<24|b<<16|p-o|0}}return 0!==O&&(i[p+O]=g-x<<24|64<<16|0),s.bits=v,0};const{Z_FINISH:de,Z_BLOCK:ge,Z_TREES:ye,Z_OK:me,Z_STREAM_END:_e,Z_NEED_DICT:ve,Z_STREAM_ERROR:be,Z_DATA_ERROR:xe,Z_MEM_ERROR:we,Z_BUF_ERROR:Ee,Z_DEFLATED:Oe}=q,Se=12,Ie=30,Ce=t=>(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24);function Te(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Pe=t=>{if(!t||!t.state)return be;const e=t.state;return t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=1&e.wrap),e.mode=1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Int32Array(852),e.distcode=e.distdyn=new Int32Array(592),e.sane=1,e.back=-1,me},Re=t=>{if(!t||!t.state)return be;const e=t.state;return e.wsize=0,e.whave=0,e.wnext=0,Pe(t)},Le=(t,e)=>{let r;if(!t||!t.state)return be;const n=t.state;return e<0?(r=0,e=-e):(r=1+(e>>4),e<48&&(e&=15)),e&&(e<8||e>15)?be:(null!==n.window&&n.wbits!==e&&(n.window=null),n.wrap=r,n.wbits=e,Re(t))},Me=(t,e)=>{if(!t)return be;const r=new Te;t.state=r,r.window=null;const n=Le(t,e);return n!==me&&(t.state=null),n};let Ne,Ae,ke=!0;const je=t=>{if(ke){Ne=new Int32Array(512),Ae=new Int32Array(32);let e=0;for(;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(pe(1,t.lens,0,288,Ne,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;pe(2,t.lens,0,32,Ae,0,t.work,{bits:5}),ke=!1}t.lencode=Ne,t.lenbits=9,t.distcode=Ae,t.distbits=5},Fe=(t,e,r,n)=>{let i;const o=t.state;return null===o.window&&(o.wsize=1<=o.wsize?(o.window.set(e.subarray(r-o.wsize,r),0),o.wnext=0,o.whave=o.wsize):(i=o.wsize-o.wnext,i>n&&(i=n),o.window.set(e.subarray(r-n,r-n+i),o.wnext),(n-=i)?(o.window.set(e.subarray(r-n,r),0),o.wnext=n,o.whave=o.wsize):(o.wnext+=i,o.wnext===o.wsize&&(o.wnext=0),o.whaveMe(t,15),inflateInit2:Me,inflate:(t,e)=>{let r,n,i,o,a,s,l,u,c,h,f,p,d,g,y,m,_,v,b,x,w,E,O=0;const S=new Uint8Array(4);let I,C;const T=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return be;r=t.state,r.mode===Se&&(r.mode=13),a=t.next_out,i=t.output,l=t.avail_out,o=t.next_in,n=t.input,s=t.avail_in,u=r.hold,c=r.bits,h=s,f=l,E=me;t:for(;;)switch(r.mode){case 1:if(0===r.wrap){r.mode=13;break}for(;c<16;){if(0===s)break t;s--,u+=n[o++]<>>8&255,r.check=z(r.check,S,2,0),u=0,c=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&u)<<8)+(u>>8))%31){t.msg="incorrect header check",r.mode=Ie;break}if((15&u)!==Oe){t.msg="unknown compression method",r.mode=Ie;break}if(u>>>=4,c-=4,w=8+(15&u),0===r.wbits)r.wbits=w;else if(w>r.wbits){t.msg="invalid window size",r.mode=Ie;break}r.dmax=1<>8&1),512&r.flags&&(S[0]=255&u,S[1]=u>>>8&255,r.check=z(r.check,S,2,0)),u=0,c=0,r.mode=3;case 3:for(;c<32;){if(0===s)break t;s--,u+=n[o++]<>>8&255,S[2]=u>>>16&255,S[3]=u>>>24&255,r.check=z(r.check,S,4,0)),u=0,c=0,r.mode=4;case 4:for(;c<16;){if(0===s)break t;s--,u+=n[o++]<>8),512&r.flags&&(S[0]=255&u,S[1]=u>>>8&255,r.check=z(r.check,S,2,0)),u=0,c=0,r.mode=5;case 5:if(1024&r.flags){for(;c<16;){if(0===s)break t;s--,u+=n[o++]<>>8&255,r.check=z(r.check,S,2,0)),u=0,c=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&(p=r.length,p>s&&(p=s),p&&(r.head&&(w=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(n.subarray(o,o+p),w)),512&r.flags&&(r.check=z(r.check,n,p,o)),s-=p,o+=p,r.length-=p),r.length))break t;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===s)break t;p=0;do{w=n[o+p++],r.head&&w&&r.length<65536&&(r.head.name+=String.fromCharCode(w))}while(w&&p>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=Se;break;case 10:for(;c<32;){if(0===s)break t;s--,u+=n[o++]<>>=7&c,c-=7&c,r.mode=27;break}for(;c<3;){if(0===s)break t;s--,u+=n[o++]<>>=1,c-=1,3&u){case 0:r.mode=14;break;case 1:if(je(r),r.mode=20,e===ye){u>>>=2,c-=2;break t}break;case 2:r.mode=17;break;case 3:t.msg="invalid block type",r.mode=Ie}u>>>=2,c-=2;break;case 14:for(u>>>=7&c,c-=7&c;c<32;){if(0===s)break t;s--,u+=n[o++]<>>16^65535)){t.msg="invalid stored block lengths",r.mode=Ie;break}if(r.length=65535&u,u=0,c=0,r.mode=15,e===ye)break t;case 15:r.mode=16;case 16:if(p=r.length,p){if(p>s&&(p=s),p>l&&(p=l),0===p)break t;i.set(n.subarray(o,o+p),a),s-=p,o+=p,l-=p,a+=p,r.length-=p;break}r.mode=Se;break;case 17:for(;c<14;){if(0===s)break t;s--,u+=n[o++]<>>=5,c-=5,r.ndist=1+(31&u),u>>>=5,c-=5,r.ncode=4+(15&u),u>>>=4,c-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=Ie;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,c-=3}for(;r.have<19;)r.lens[T[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,I={bits:r.lenbits},E=pe(0,r.lens,0,19,r.lencode,0,r.work,I),r.lenbits=I.bits,E){t.msg="invalid code lengths set",r.mode=Ie;break}r.have=0,r.mode=19;case 19:for(;r.have>>24,m=O>>>16&255,_=65535&O,!(y<=c);){if(0===s)break t;s--,u+=n[o++]<>>=y,c-=y,r.lens[r.have++]=_;else{if(16===_){for(C=y+2;c>>=y,c-=y,0===r.have){t.msg="invalid bit length repeat",r.mode=Ie;break}w=r.lens[r.have-1],p=3+(3&u),u>>>=2,c-=2}else if(17===_){for(C=y+3;c>>=y,c-=y,w=0,p=3+(7&u),u>>>=3,c-=3}else{for(C=y+7;c>>=y,c-=y,w=0,p=11+(127&u),u>>>=7,c-=7}if(r.have+p>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=Ie;break}for(;p--;)r.lens[r.have++]=w}}if(r.mode===Ie)break;if(0===r.lens[256]){t.msg="invalid code -- missing end-of-block",r.mode=Ie;break}if(r.lenbits=9,I={bits:r.lenbits},E=pe(1,r.lens,0,r.nlen,r.lencode,0,r.work,I),r.lenbits=I.bits,E){t.msg="invalid literal/lengths set",r.mode=Ie;break}if(r.distbits=6,r.distcode=r.distdyn,I={bits:r.distbits},E=pe(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,I),r.distbits=I.bits,E){t.msg="invalid distances set",r.mode=Ie;break}if(r.mode=20,e===ye)break t;case 20:r.mode=21;case 21:if(s>=6&&l>=258){t.next_out=a,t.avail_out=l,t.next_in=o,t.avail_in=s,r.hold=u,r.bits=c,se(t,f),a=t.next_out,i=t.output,l=t.avail_out,o=t.next_in,n=t.input,s=t.avail_in,u=r.hold,c=r.bits,r.mode===Se&&(r.back=-1);break}for(r.back=0;O=r.lencode[u&(1<>>24,m=O>>>16&255,_=65535&O,!(y<=c);){if(0===s)break t;s--,u+=n[o++]<>v)],y=O>>>24,m=O>>>16&255,_=65535&O,!(v+y<=c);){if(0===s)break t;s--,u+=n[o++]<>>=v,c-=v,r.back+=v}if(u>>>=y,c-=y,r.back+=y,r.length=_,0===m){r.mode=26;break}if(32&m){r.back=-1,r.mode=Se;break}if(64&m){t.msg="invalid literal/length code",r.mode=Ie;break}r.extra=15&m,r.mode=22;case 22:if(r.extra){for(C=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;O=r.distcode[u&(1<>>24,m=O>>>16&255,_=65535&O,!(y<=c);){if(0===s)break t;s--,u+=n[o++]<>v)],y=O>>>24,m=O>>>16&255,_=65535&O,!(v+y<=c);){if(0===s)break t;s--,u+=n[o++]<>>=v,c-=v,r.back+=v}if(u>>>=y,c-=y,r.back+=y,64&m){t.msg="invalid distance code",r.mode=Ie;break}r.offset=_,r.extra=15&m,r.mode=24;case 24:if(r.extra){for(C=r.extra;c>>=r.extra,c-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=Ie;break}r.mode=25;case 25:if(0===l)break t;if(p=f-l,r.offset>p){if(p=r.offset-p,p>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=Ie;break}p>r.wnext?(p-=r.wnext,d=r.wsize-p):d=r.wnext-p,p>r.length&&(p=r.length),g=r.window}else g=i,d=a-r.offset,p=r.length;p>l&&(p=l),l-=p,r.length-=p;do{i[a++]=g[d++]}while(--p);0===r.length&&(r.mode=21);break;case 26:if(0===l)break t;i[a++]=r.length,l--,r.mode=21;break;case 27:if(r.wrap){for(;c<32;){if(0===s)break t;s--,u|=n[o++]<{if(!t||!t.state)return be;let e=t.state;return e.window&&(e.window=null),t.state=null,me},inflateGetHeader:(t,e)=>{if(!t||!t.state)return be;const r=t.state;return 0==(2&r.wrap)?be:(r.head=e,e.done=!1,me)},inflateSetDictionary:(t,e)=>{const r=e.length;let n,i,o;return t&&t.state?(n=t.state,0!==n.wrap&&11!==n.mode?be:11===n.mode&&(i=1,i=U(i,e,r,0),i!==n.check)?xe:(o=Fe(t,e,r,r),o?(n.mode=31,we):(n.havedict=1,me))):be},inflateInfo:"pako inflate (from Nodeca project)"};var Ge=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const Ue=Object.prototype.toString,{Z_NO_FLUSH:Be,Z_FINISH:ze,Z_OK:Ve,Z_STREAM_END:qe,Z_NEED_DICT:Ye,Z_STREAM_ERROR:We,Z_DATA_ERROR:Xe,Z_MEM_ERROR:He}=q;function Ze(t){this.options=Ut({chunkSize:65536,windowBits:15,to:""},t||{});const e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(e.windowBits>=0&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Xt,this.strm.avail_out=0;let r=De.inflateInit2(this.strm,e.windowBits);if(r!==Ve)throw new Error(V[r]);if(this.header=new Ge,De.inflateGetHeader(this.strm,this.header),e.dictionary&&("string"==typeof e.dictionary?e.dictionary=qt(e.dictionary):"[object ArrayBuffer]"===Ue.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=De.inflateSetDictionary(this.strm,e.dictionary),r!==Ve)))throw new Error(V[r])}function Ke(t,e){const r=new Ze(e);if(r.push(t),r.err)throw r.msg||V[r.err];return r.result}Ze.prototype.push=function(t,e){const r=this.strm,n=this.options.chunkSize,i=this.options.dictionary;let o,a,s;if(this.ended)return!1;for(a=e===~~e?e:!0===e?ze:Be,"[object ArrayBuffer]"===Ue.call(t)?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;;){for(0===r.avail_out&&(r.output=new Uint8Array(n),r.next_out=0,r.avail_out=n),o=De.inflate(r,a),o===Ye&&i&&(o=De.inflateSetDictionary(r,i),o===Ve?o=De.inflate(r,a):o===Xe&&(o=Ye));r.avail_in>0&&o===qe&&r.state.wrap>0&&0!==t[r.next_in];)De.inflateReset(r),o=De.inflate(r,a);switch(o){case We:case Xe:case Ye:case He:return this.onEnd(o),this.ended=!0,!1}if(s=r.avail_out,r.next_out&&(0===r.avail_out||o===qe))if("string"===this.options.to){let t=Wt(r.output,r.next_out),e=r.next_out-t,i=Yt(r.output,t);r.next_out=e,r.avail_out=n-e,e&&r.output.set(r.output.subarray(t,t+e),0),this.onData(i)}else this.onData(r.output.length===r.next_out?r.output:r.output.subarray(0,r.next_out));if(o!==Ve||0!==s){if(o===qe)return o=De.inflateEnd(this.strm),this.onEnd(o),this.ended=!0,!0;if(0===r.avail_in)break}}return!0},Ze.prototype.onData=function(t){this.chunks.push(t)},Ze.prototype.onEnd=function(t){t===Ve&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=Bt(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};var Je={Inflate:Ze,inflate:Ke,inflateRaw:function(t,e){return(e=e||{}).raw=!0,Ke(t,e)},ungzip:Ke,constants:q};const{Deflate:$e,deflate:Qe,deflateRaw:tr,gzip:er}=ae,{Inflate:rr,inflate:nr,inflateRaw:ir,ungzip:or}=Je;var ar=nr},function(t,e){t.exports=function(t,e,r){const n=r&&r.debug||!1;n&&console.log("getting "+e+" in "+t);const i="object"==typeof t?t.outer:t,o=e+'\\="([^"]*)"';n&&console.log("pattern:",o);const a=new RegExp(o).exec(i);if(n&&console.log("match:",a),a)return a[1]}},function(t,e){},function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e){t.exports='
    \n {{#gt tabs.length 1}}\n
    \n {{#each tabs}}\n
    \n \n
    \n {{/each}}\n
    \n {{/gt}}\n
    \n \n {{#if options.takeMeThere}}\n {{#if options.textMode}}\n \n {{else}}\n \n {{/if}}\n {{/if}}\n
    {{{tabs.0.content}}}
    \n
    \n
    '},function(t){t.exports=JSON.parse('{"a":"2.5.0"}')},function(t,e,r){},function(t,e){e.read=function(t,e,r,n,i){var o,a,s=8*i-n-1,l=(1<>1,c=-7,h=r?i-1:0,f=r?-1:1,p=t[e+h];for(h+=f,o=p&(1<<-c)-1,p>>=-c,c+=s;c>0;o=256*o+t[e+h],h+=f,c-=8);for(a=o&(1<<-c)-1,o>>=-c,c+=n;c>0;a=256*a+t[e+h],h+=f,c-=8);if(0===o)o=1-u;else{if(o===l)return a?NaN:1/0*(p?-1:1);a+=Math.pow(2,n),o-=u}return(p?-1:1)*a*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var a,s,l,u=8*o-i-1,c=(1<>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,g=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(s=isNaN(e)?1:0,a=c):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),(e+=a+h>=1?f/l:f*Math.pow(2,1-h))*l>=2&&(a++,l/=2),a+h>=c?(s=0,a=c):a+h>=1?(s=(e*l-1)*Math.pow(2,i),a+=h):(s=e*Math.pow(2,h-1)*Math.pow(2,i),a=0));i>=8;t[r+p]=255&s,p+=d,s/=256,i-=8);for(a=a<0;t[r+p]=255&a,p+=d,a/=256,u-=8);t[r+p-d]|=128*g}},function(t){t.exports=JSON.parse('{"name":"mapea","version":"6.2.0","description":"Herramienta para desarrollo de mapas interactivos de forma sencilla","keywords":["map","mapping","tool","sigcorporativo-ja"],"homepage":"http://mapea4-sigc.juntadeandalucia.es/","repository":{"type":"git","url":"https://github.com/sigcorporativo-ja/Mapea4"},"license":"EUPL","bugs":{"url":"https://github.com/sigcorporativo-ja/Mapea4/issues"},"devDependencies":{"@babel/core":"^7.6.4","@babel/plugin-proposal-export-default-from":"^7.0.0-beta.51","@babel/preset-env":"^7.4.4","babel-loader":"^8.0.0-beta.4","chromedriver":"^2.46.0","copy-webpack-plugin":"^6.1.0","cross-env":"^5.2.0","css-loader":"^2.1.1","eslint":"^4.19.1","eslint-config-airbnb":"^16.1.0","eslint-loader":"^2.0.0","eslint-plugin-import":"^2.9.0","eslint-plugin-jsx-a11y":"^6.0.3","eslint-plugin-react":"^7.7.0","expect.js":"^0.3.1","expose-loader":"^0.7.5","file-loader":"^1.1.11","fs-extra":"2.0.0","get-image-colors":"^2.0.0","html-loader":"^0.5.5","jsdoc-plugin-typescript":"^2.0.5","karma":"^5.2.2","karma-chrome-launcher":"^2.2.0","karma-firefox-launcher":"^1.1.0","karma-mocha":"^2.0.1","karma-webpack":"^3.0.5","mini-css-extract-plugin":"^0.4.1","mocha":"^8.1.3","nightwatch":"^1.4.2","optimize-css-assets-webpack-plugin":"^5.0.1","style-loader":"^0.21.0","terser-webpack-plugin":"^4.2.1","uglify-js":"^2.6.1","uglifycss":"0.0.29","url-loader":"^1.0.1","walk":"^2.3.14","webpack":"^4.41.2","webpack-cli":"^3.3.12","webpack-dev-server":"^3.11.0","yargs":"^16.0.3"},"dependencies":{"chroma-js":"^1.3.7","draggabilly":"^2.2.0","handlebars":"4.5.2","jsdoc":"^3.6.4","jsts":"^2.0.2","ol":"6.14.1","proj4":"^2.4.4"},"scripts":{"build":"cross-env NODE_OPTIONS=--max_old_space_size=2048 ./node/npm run build:core && ./node/npm run build:plugins && ./node/npm run build:plugins-extern","build:sourcemap":"npm run prebuild && npm run build:core -- --source-map && npm run build:plugins","build:core":"webpack --config=webpack-config/webpack.production-core.config.js","build:plugins":"webpack --config=webpack-config/webpack.production-plugins.config.js","build:plugins-extern":"./node/node tasks/build-extern-plugins.js","debug:build":"webpack-dev-server --config=webpack-config/webpack.test-production.config.js","debug:prebuild":"node --inspect-brk tasks/generate-index.js","generate-doc":"jsdoc config/jsdoc/api/index.md -c config/jsdoc/api/conf.json","generate-test":"node tasks/test-generator","karma":"karma start ./karma.conf.js","nightwatch":"nightwatch --config=./nightwatch.conf.js","prebuild":"node tasks/clean-build.js --path=dist && node tasks/generate-index.js && node tasks/generate-plugins-entrypoints.js","postbuild":"npm run generate-doc && node tasks/copy-legacy.js","publish_npm":"node tasks/prepare-package/prepare.js","start":"webpack-dev-server --config=webpack-config/webpack.development.config.js","start:build":"npm run build && npm run debug:build","test":"npm run karma && npm run nightwatch"}}')},function(t,e){t.exports='
    '},function(t){t.exports=JSON.parse('{"location":{"title":"Get current location"},"layerswitcher":{"title":"Layer selector"},"scale":{"title":"Scale","scale":"Scale"},"getfeatureinfo":{"info":"Information","title":"Consult layer","no_info":"No associated info","info_of":"Information about","unsupported_format":"Unsupported format"},"wmcselector":{"title":"Context selector"},"dialog":{"info":"INFORMATION","error":"ERROR","success":"SUCCESS","id_feature":"An ID has not been indicated to obtain the feature","invalid_type_layer":"A valid type was not specified for the layer","vector_filter":"The indicated filter is not correct","unauthorized_user":"An error occurred while loading the layer: Unauthorized user.","only_one_filter":"FeatureID and CQL are mutually exclusive, indicate only one type of filtering.","getfeatureinfo_type":"The requested format for the information is not available. Try it using gml, plain or html."},"feature":{"incorrect_attributes":"The attributes were not specified correctly."},"exception":{"addto_method":"The used implementation does not have the addTo method","no_get_rotation_method":"The used implementation does not have the getRotation method","no_set_rotation_method":"The used implementation does not have the setRotation method","getelement_method":"The used implementation does not have the getElement method","getfeatureinfo_method":"The used implementation can not create GetFeatureInfo controls","mouse_method":"The used implementation can not create Mouse controls","navtoolbar_method":"The used implementation can not create navtoolbar controls","overviewmap_method":"The used implementation can not create OverviewMap controls","panzoom_method":"The used implementation can not create Panzoom controls","panzoombar_method":"The used implementation can not create Panzoombar controls","scale_method":"The used implementation can not create Scale controls","scaleline_method":"The used implementation can not create ScaleLine controls","wmcselector_method":"The used implementation can not create WMCSelector controls","geojson_method":"The used implementation can not create objects M.impl.format.GeoJSON","wkt_method":"The used implementation can not creat objects M.impl.format.WKT","getfeaturesbylayer_method":"The used implementation does not have the getFeaturesByLayer method","geojsonlayer_method":"The used implementation can not create GeoJSON layers","no_param":"No parameters specified","no_name":"You have not specified any name","kmllayer_method":"The used implementation can not create KML layers","isvisible_method":"The used implementation does not have the isVisible method","isqueryable_methd":"The used implementation does not have the isQueryable method","visibility_param":"You have not specified any visibility parameters","setvisible_method":"The used implementation does not have the setVisible method","inrange_method":"The used implementation does not have the inRange method","mapbox_method":"The used implementation can not create Mapbox layers","osm_method":"The used implementation can not create OSM layers","vectorlayer_method":"The used implementation can not create Vector layers","wfslayer_method":"The used implementation can not create WFS layers","wmclayer_method":"The used implementation can not create WMC layers","select_method":"The used implementation does not have the select method","unselect_method":"The used implementation does not have the unselect method","constructor_impl":"The used implementation does not have a constructor.","getlayers_method":"The used implementation does not have the getLayers method.","getbaselayers_method":"The used implementation does not have the getBaseLayers method.","addlayers_method":"The used implementation does not have the addLayers method.","removelayers_method":"The used implementation does not have the removeLayers method.","getwmc_method":"The implementation used does not have the getWMC method.","addwmc_method":"The used implementation does not have the addWMC method.","removewmc_method":"The used implementation does not have the removeWMC method.","getkml_method":"The used implementation does not have the getKML method.","addkml_method":"The implementation used does not have the addKML method.","removekml_method":"The implementation used does not have the removeKML method.","getwms_method":"The used implementation does not have the getWMS method.","addwms_method":"The used implementation does not have the addWMS method.","removewms_method":"The used implementation does not have the removeWMS method.","getwfs_method":"The implementation used does not have the getWFS method.","getgeojson_method":"The used implementation does not have the getGeoJSON method.","addwfs_method":"The used implementation does not have the addWFS method.","removewfs_method":"The used implementation does not have the removeWFS method.","getwmts_method":"The implementation used does not have the getWMTS method.","addwmts_method":"The used implementation does not have the addWMTS method.","removewmts_method":"The used implementation does not have the removeWMTS method.","getmbtiles_method":"The used implementation does not have the getMBtiles method.","getcontrols_method":"The used implementation does not have the getControls method.","addcontrols_method":"The used implementation does not have the addControls method.","remove_control":"You have not specified any control to delete.","removecontrol_method":"The used implementation does not have the removeControls method.","setmaxextent_method":"The used implementation does not have the setMaxExtent method.","getbbox_method":"The used implementation does not have the getBbox method.","no_bbox":"You have not specified any bbox.","setbbox_method":"The used implementation does not have the setBbox method.","incorrect_bbox_format":"The format of the bbox parameter is not correct.","getzoom_method":"The used implementation does not have the getZoom method.","no_zoom":"You have not specified any zoom.","setzoom_method":"The implementation used does not have the setZoom method.","getcenter_method":"The used implementation does not have the getCenter method.","setcenter_method":"The used implementation does not have the setCenter method.","getresolutions_method":"The used implementation does not have the getResolutions method.","no_resolutions":"You have not specified any resolution.","setresolutions_method":"The used implementation does not have the setResolutions method.","getscale_method":"The used implementation does not have the getScale method.","getprojection_method":"The implementation used does not have the getProjection method.","no_projection":"You have not specified any projection.","setprojection_method":"The used implementation does not have the setProjection method.","no_plugins":"You have not specified any plugins.","no_add_plugin_to_map":"The plugin can not be added to the map.","no_plugin_to_remove":"You have not specified any plugins to delete.","destroy_method":"The used implementation does not have the destroy method.","addlabel_method":"The used implementation does not have the addLabel method.","no_point":"You have not specified any points.","remove_control_from_panel":"You must remove the controls from the panel previously.","getcontainer_method":"The used implementation does not have the getContainer method.","getmapimpl_method":"The used implementation does not have the getMapImpl method.","removepopup_method":"The used implementation does not have the removePopup method.","no_popup":"You have not specified any popup.","invalid_popup":"The specified popup is not valid.","no_maxextent":"You have not specified any maxExtent","must_be_document":"doc.nodeType must be DOCUMENT type","no_service_response":"There was no reply from the service","no_kml_response":"There was no response from the KML","no_getfeature_response":"There was no response in the GetFeature operation","no_map":"You have not specified any map","layerswitcher_method":"The used implementation can not create LayerSwitcher controls","location_method":"The used implementation can not create Location controls","wms_method":"The used implementation can not create WMS layers","wmts_method":"The used implementation can not create WMTS layers","no_impl":"No implementation specified","no_container":"You have not specified any container parameters","no_id_container":"There is no container with the specified id","no_center":"You have not specified any center parameters","no_attr_name":"The name of the attribute was not specified","no_empty":"The attribute name can not be null. Specify string or function","invalid_center_param":"The format of the center parameter is not correct","invalid_maxextent_param":"The format of the maxExtent parameter is not correct","invalid_resolutions_param":"The format of the resolutions parameter is not correct","invalid_zoom_param":"The format of the zoom parameter is not correct","min_gt_max":"A minimum radius greater than the maximum can not be established.","max_lt_min":"A maximum radius of less than the minimum can not be established.","no_geojson":"No GeoJSON has been specified","unsupported_lang":"A language without support has been established","generate_image":"An error occurred while generating the image"}}')},function(t){t.exports=JSON.parse('{"location":{"title":"Obtener ubicación actual"},"layerswitcher":{"title":"Selector de capas"},"scale":{"title":"Escala","scale":"Escala"},"getfeatureinfo":{"info":"Información","title":"Consultar capa","no_info":"No existe información asociada","info_of":"Información de","unsupported_format":"Formato no soportado"},"wmcselector":{"title":"Selector de contextos"},"dialog":{"info":"INFORMACIÓN","error":"ERROR","success":"ÉXITO","id_feature":"No se ha indicado un ID para obtener el feature","invalid_type_layer":"No se ha especificado un tipo válido para la capa","vector_filter":"El filtro indicado no es correcto","unauthorized_user":"Ha ocurrido un error al cargar la capa: Usuario no autorizado.","only_one_filter":"FeatureID y CQL son mutuamente excluyentes. Indicar sólo un tipo de filtrado.","getfeatureinfo_type":"El formato solicitado para la información no está disponible. Inténtelo utilizando gml, plain o html."},"feature":{"incorrect_attributes":"No se han especificado correctamente los atributos."},"exception":{"addto_method":"La implementación usada no posee el método addTo","no_get_rotation_method":"La implementación usada no posee el método getRotation","no_set_rotation_method":"La implementación usada no posee el método setRotation","getelement_method":"La implementación usada no posee el método getElement","getfeatureinfo_method":"La implementación usada no puede crear controles GetFeatureInfo","mouse_method":"La implementación usada no puede crear controles Mouse","navtoolbar_method":"La implementación usada no puede crear controles Navtoolbar","overviewmap_method":"La implementación usada no puede crear controles OverviewMap","panzoom_method":"La implementación usada no puede crear controles Panzoom","panzoombar_method":"La implementación usada no puede crear controles Panzoombar","scale_method":"La implementación usada no puede crear controles Scale","scaleline_method":"La implementación usada no puede crear controles ScaleLine","wmcselector_method":"La implementación usada no puede crear controles WMCSelector","geojson_method":"La implementación usada no puede crear objetos M.impl.format.GeoJSON","wkt_method":"La implementación usada no puede creat objetos M.impl.format.WKT","getfeaturesbylayer_method":"La implementación usada no posee el método getFeaturesByLayer","geojsonlayer_method":"La implementación usada no puede crear capas GeoJSON","no_param":"No se ha especificado ningun parámetro","no_name":"No ha especificado ningún nombre","kmllayer_method":"La implementación usada no puede crear capas KML","isvisible_method":"La implementación usada no posee el método isVisible","isqueryable_methd":"La implementación usada no posee el método isQueryable","visibility_param":"No ha especificado ningún parámetro de visibilidad","setvisible_method":"La implementación usada no posee el método setVisible","inrange_method":"La implementación usada no posee el método inRange","mapbox_method":"La implementación usada no puede crear capas Mapbox","osm_method":"La implementación usada no puede crear capas OSM","vectorlayer_method":"La implementación usada no puede crear capas Vector","wfslayer_method":"La implementación usada no puede crear capas WFS","wmclayer_method":"La implementación usada no puede crear capas WMC","select_method":"La implementación usada no posee el método select","unselect_method":"La implementación usada no posee el método unselect","constructor_impl":"La implementación usada no posee un constructor.","getlayers_method":"La implementación usada no posee el método getLayers.","getbaselayers_method":"La implementación usada no posee el método getBaseLayers.","addlayers_method":"La implementación usada no posee el método addLayers.","removelayers_method":"La implementación usada no posee el método removeLayers.","getwmc_method":"La implementación usada no posee el método getWMC.","addwmc_method":"La implementación usada no posee el método addWMC.","removewmc_method":"La implementación usada no posee el método removeWMC.","getkml_method":"La implementación usada no posee el método getKML.","addkml_method":"La implementación usada no posee el método addKML.","removekml_method":"La implementación usada no posee el método removeKML.","getwms_method":"La implementación usada no posee el método getWMS.","addwms_method":"La implementación usada no posee el método addWMS.","removewms_method":"La implementación usada no posee el método removeWMS.","getwfs_method":"La implementación usada no posee el método getWFS.","getgeojson_method":"La implementación usada no posee el método getGeoJSON.","addwfs_method":"La implementación usada no posee el método addWFS.","removewfs_method":"La implementación usada no posee el método removeWFS.","getwmts_method":"La implementación usada no posee el método getWMTS.","addwmts_method":"La implementación usada no posee el método addWMTS.","removewmts_method":"La implementación usada no posee el método removeWMTS.","getmbtiles_method":"La implementación usada no posee el método getMBtiles.","getcontrols_method":"La implementación usada no posee el método getControls.","addcontrols_method":"La implementación usada no posee el método addControls.","remove_control":"No ha especificado ningún control a eliminar.","removecontrol_method":"La implementación usada no posee el método removeControls.","setmaxextent_method":"La implementación usada no posee el método setMaxExtent.","getbbox_method":"La implementación usada no posee el método getBbox.","no_bbox":"No ha especificado ningún bbox.","setbbox_method":"La implementación usada no posee el método setBbox.","incorrect_bbox_format":"El formato del parámetro bbox no es el correcto.","getzoom_method":"La implementación usada no posee el método getZoom.","no_zoom":"No ha especificado ningún zoom.","setzoom_method":"La implementación usada no posee el método setZoom.","getcenter_method":"La implementación usada no posee el método getCenter.","setcenter_method":"La implementación usada no posee el método setCenter.","getresolutions_method":"La implementación usada no posee el método getResolutions.","no_resolutions":"No ha especificado ninguna resolución.","setresolutions_method":"La implementación usada no posee el método setResolutions.","getscale_method":"La implementación usada no posee el método getScale.","getprojection_method":"La implementación usada no posee el método getProjection.","no_projection":"No ha especificado ninguna proyección.","setprojection_method":"La implementación usada no posee el método setProjection.","no_plugins":"No ha especificado ningún plugin.","no_add_plugin_to_map":"El plugin no puede añadirse al mapa.","no_plugin_to_remove":"No ha especificado ningún plugin a eliminar.","destroy_method":"La implementación usada no posee el método destroy.","addlabel_method":"La implementación usada no posee el método addLabel.","no_point":"No ha especificado ningún punto.","remove_control_from_panel":"Debe eliminar los controles del panel previamente.","getcontainer_method":"La implementación usada no posee el método getContainer.","getmapimpl_method":"La implementación usada no posee el método getMapImpl.","removepopup_method":"La implementación usada no posee el método removePopup.","no_popup":"No ha especificado ningún popup.","invalid_popup":"El popup especificado no es válido.","no_maxextent":"No ha especificado ningún maxExtent","must_be_document":"doc.nodeType debe ser de tipo DOCUMENT","no_service_response":"No hubo respuesta del servicio","no_kml_response":"No hubo respuesta del KML","no_getfeature_response":"No hubo respuesta en la operación GetFeature","no_map":"No ha especificado ningun mapa","layerswitcher_method":"La implementación usada no puede crear controles LayerSwitcher","location_method":"La implementación usada no puede crear controles Location","wms_method":"La implementación usada no puede crear capas WMS","wmts_method":"La implementación usada no puede crear capas WMTS","no_impl":"No se ha especificado ninguna implementación","no_container":"No ha especificado ningún parámetro contenedor","no_id_container":"No existe ningún contenedor con el id especificado","no_center":"No ha especificado ningún parámetro center","no_attr_name":"No se ha especificado el nombre del atributo","no_empty":"El nombre de atributo no puede ser nulo. Especifique cadena o función","invalid_center_param":"El formato del parámetro center no es correcto","invalid_maxextent_param":"El formato del parámetro maxExtent no es correcto","invalid_resolutions_param":"El formato del parámetro resolutions no es correcto","invalid_zoom_param":"El formato del parámetro zoom no es correcto","min_gt_max":"No puede establecerse un radio mínimo mayor que el máximo.","max_lt_min":"No puede establecerse un radio máximo menor que el mínimo.","no_geojson":"No se ha especificado ningun GeoJSON","unsupported_lang":"Se ha establecido un idioma sin soporte","generate_image":"Se ha producido un error al generar la imagen"}}')},function(t,e){t.exports='
    \n \n
    '},function(t,e){t.exports='
    \n {{#each features}}\n
    \n {{#each attributes}}\n \n \n \n \n \n
    {{key}}{{{value}}}
    \n {{/each}}\n
    \n
    \n {{/each}}\n
    '},function(t,e){t.exports='
    \n
    \n
    \n
    \n \n {{{title}}}\n
    \n
    {{{message}}}
    \n
    \n \n
    \n
    \n
    \n
    '},function(t,e){t.exports='
    \n \n
    '},function(t,e){t.exports='
    \n
    {{scale}} = 1 :
    \n
    \n
    '},function(t,e){t.exports='
    \n
    \n
    \n
    \n \n \n \n \n
    \n
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    '},function(t,e){t.exports='
    \n {{{info}}}\n
    '},function(t,e){t.exports=" {{#each layers}}\n \n {{/each}}"},function(t,e){t.exports='
    \n \n
    '},function(t,e){t.exports='
    \n \n
    \n
    '},function(t,e){t.exports='
    \n {{{info}}}\n
    '},function(t,e){t.exports='
    \n

    {{{name}}}

    \n
    {{{desc}}}
    \n
    '},function(t,e,r){"use strict";t.exports=i;var n=r(94);function i(t){this.buf=ArrayBuffer.isView&&ArrayBuffer.isView(t)?t:new Uint8Array(t||0),this.pos=0,this.type=0,this.length=this.buf.length}i.Varint=0,i.Fixed64=1,i.Bytes=2,i.Fixed32=5;var o=4294967296,a=1/o,s="undefined"==typeof TextDecoder?null:new TextDecoder("utf8");function l(t){return t.type===i.Bytes?t.readVarint()+t.pos:t.pos+1}function u(t,e,r){return r?4294967296*e+(t>>>0):4294967296*(e>>>0)+(t>>>0)}function c(t,e,r){var n=e<=16383?1:e<=2097151?2:e<=268435455?3:Math.floor(Math.log(e)/(7*Math.LN2));r.realloc(n);for(var i=r.pos-1;i>=t;i--)r.buf[i+n]=r.buf[i]}function h(t,e){for(var r=0;r>>8,t[r+2]=e>>>16,t[r+3]=e>>>24}function w(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16)+(t[e+3]<<24)}i.prototype={destroy:function(){this.buf=null},readFields:function(t,e,r){for(r=r||this.length;this.pos>3,o=this.pos;this.type=7&n,t(i,e,this),this.pos===o&&this.skip(n)}return e},readMessage:function(t,e){return this.readFields(t,e,this.readVarint()+this.pos)},readFixed32:function(){var t=b(this.buf,this.pos);return this.pos+=4,t},readSFixed32:function(){var t=w(this.buf,this.pos);return this.pos+=4,t},readFixed64:function(){var t=b(this.buf,this.pos)+b(this.buf,this.pos+4)*o;return this.pos+=8,t},readSFixed64:function(){var t=b(this.buf,this.pos)+w(this.buf,this.pos+4)*o;return this.pos+=8,t},readFloat:function(){var t=n.read(this.buf,this.pos,!0,23,4);return this.pos+=4,t},readDouble:function(){var t=n.read(this.buf,this.pos,!0,52,8);return this.pos+=8,t},readVarint:function(t){var e,r,n=this.buf;return e=127&(r=n[this.pos++]),r<128?e:(e|=(127&(r=n[this.pos++]))<<7,r<128?e:(e|=(127&(r=n[this.pos++]))<<14,r<128?e:(e|=(127&(r=n[this.pos++]))<<21,r<128?e:function(t,e,r){var n,i,o=r.buf;if(i=o[r.pos++],n=(112&i)>>4,i<128)return u(t,n,e);if(i=o[r.pos++],n|=(127&i)<<3,i<128)return u(t,n,e);if(i=o[r.pos++],n|=(127&i)<<10,i<128)return u(t,n,e);if(i=o[r.pos++],n|=(127&i)<<17,i<128)return u(t,n,e);if(i=o[r.pos++],n|=(127&i)<<24,i<128)return u(t,n,e);if(i=o[r.pos++],n|=(1&i)<<31,i<128)return u(t,n,e);throw new Error("Expected varint not more than 10 bytes")}(e|=(15&(r=n[this.pos]))<<28,t,this))))},readVarint64:function(){return this.readVarint(!0)},readSVarint:function(){var t=this.readVarint();return t%2==1?(t+1)/-2:t/2},readBoolean:function(){return Boolean(this.readVarint())},readString:function(){var t=this.readVarint()+this.pos,e=this.pos;return this.pos=t,t-e>=12&&s?function(t,e,r){return s.decode(t.subarray(e,r))}(this.buf,e,t):function(t,e,r){var n="",i=e;for(;i239?4:l>223?3:l>191?2:1;if(i+c>r)break;1===c?l<128&&(u=l):2===c?128==(192&(o=t[i+1]))&&(u=(31&l)<<6|63&o)<=127&&(u=null):3===c?(o=t[i+1],a=t[i+2],128==(192&o)&&128==(192&a)&&((u=(15&l)<<12|(63&o)<<6|63&a)<=2047||u>=55296&&u<=57343)&&(u=null)):4===c&&(o=t[i+1],a=t[i+2],s=t[i+3],128==(192&o)&&128==(192&a)&&128==(192&s)&&((u=(15&l)<<18|(63&o)<<12|(63&a)<<6|63&s)<=65535||u>=1114112)&&(u=null)),null===u?(u=65533,c=1):u>65535&&(u-=65536,n+=String.fromCharCode(u>>>10&1023|55296),u=56320|1023&u),n+=String.fromCharCode(u),i+=c}return n}(this.buf,e,t)},readBytes:function(){var t=this.readVarint()+this.pos,e=this.buf.subarray(this.pos,t);return this.pos=t,e},readPackedVarint:function(t,e){if(this.type!==i.Bytes)return t.push(this.readVarint(e));var r=l(this);for(t=t||[];this.pos127;);else if(e===i.Bytes)this.pos=this.readVarint()+this.pos;else if(e===i.Fixed32)this.pos+=4;else{if(e!==i.Fixed64)throw new Error("Unimplemented type: "+e);this.pos+=8}},writeTag:function(t,e){this.writeVarint(t<<3|e)},realloc:function(t){for(var e=this.length||16;e268435455||t<0?function(t,e){var r,n;t>=0?(r=t%4294967296|0,n=t/4294967296|0):(n=~(-t/4294967296),4294967295^(r=~(-t%4294967296))?r=r+1|0:(r=0,n=n+1|0));if(t>=0x10000000000000000||t<-0x10000000000000000)throw new Error("Given varint doesn't fit into 10 bytes");e.realloc(10),function(t,e,r){r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos++]=127&t|128,t>>>=7,r.buf[r.pos]=127&t}(r,0,e),function(t,e){var r=(7&t)<<4;if(e.buf[e.pos++]|=r|((t>>>=3)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;if(e.buf[e.pos++]=127&t|((t>>>=7)?128:0),!t)return;e.buf[e.pos++]=127&t}(n,e)}(t,this):(this.realloc(4),this.buf[this.pos++]=127&t|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=127&(t>>>=7)|(t>127?128:0),t<=127||(this.buf[this.pos++]=t>>>7&127))))},writeSVarint:function(t){this.writeVarint(t<0?2*-t-1:2*t)},writeBoolean:function(t){this.writeVarint(Boolean(t))},writeString:function(t){t=String(t),this.realloc(4*t.length),this.pos++;var e=this.pos;this.pos=function(t,e,r){for(var n,i,o=0;o55295&&n<57344){if(!i){n>56319||o+1===e.length?(t[r++]=239,t[r++]=191,t[r++]=189):i=n;continue}if(n<56320){t[r++]=239,t[r++]=191,t[r++]=189,i=n;continue}n=i-55296<<10|n-56320|65536,i=null}else i&&(t[r++]=239,t[r++]=191,t[r++]=189,i=null);n<128?t[r++]=n:(n<2048?t[r++]=n>>6|192:(n<65536?t[r++]=n>>12|224:(t[r++]=n>>18|240,t[r++]=n>>12&63|128),t[r++]=n>>6&63|128),t[r++]=63&n|128)}return r}(this.buf,t,this.pos);var r=this.pos-e;r>=128&&c(e,r,this),this.pos=e-1,this.writeVarint(r),this.pos+=r},writeFloat:function(t){this.realloc(4),n.write(this.buf,t,this.pos,!0,23,4),this.pos+=4},writeDouble:function(t){this.realloc(8),n.write(this.buf,t,this.pos,!0,52,8),this.pos+=8},writeBytes:function(t){var e=t.length;this.writeVarint(e),this.realloc(e);for(var r=0;r=128&&c(r,n,this),this.pos=r-1,this.writeVarint(n),this.pos+=n},writeMessage:function(t,e,r){this.writeTag(t,i.Bytes),this.writeRawMessage(e,r)},writePackedVarint:function(t,e){e.length&&this.writeMessage(t,h,e)},writePackedSVarint:function(t,e){e.length&&this.writeMessage(t,f,e)},writePackedBoolean:function(t,e){e.length&&this.writeMessage(t,g,e)},writePackedFloat:function(t,e){e.length&&this.writeMessage(t,p,e)},writePackedDouble:function(t,e){e.length&&this.writeMessage(t,d,e)},writePackedFixed32:function(t,e){e.length&&this.writeMessage(t,y,e)},writePackedSFixed32:function(t,e){e.length&&this.writeMessage(t,m,e)},writePackedFixed64:function(t,e){e.length&&this.writeMessage(t,_,e)},writePackedSFixed64:function(t,e){e.length&&this.writeMessage(t,v,e)},writeBytesField:function(t,e){this.writeTag(t,i.Bytes),this.writeBytes(e)},writeFixed32Field:function(t,e){this.writeTag(t,i.Fixed32),this.writeFixed32(e)},writeSFixed32Field:function(t,e){this.writeTag(t,i.Fixed32),this.writeSFixed32(e)},writeFixed64Field:function(t,e){this.writeTag(t,i.Fixed64),this.writeFixed64(e)},writeSFixed64Field:function(t,e){this.writeTag(t,i.Fixed64),this.writeSFixed64(e)},writeVarintField:function(t,e){this.writeTag(t,i.Varint),this.writeVarint(e)},writeSVarintField:function(t,e){this.writeTag(t,i.Varint),this.writeSVarint(e)},writeStringField:function(t,e){this.writeTag(t,i.Bytes),this.writeString(e)},writeFloatField:function(t,e){this.writeTag(t,i.Fixed32),this.writeFloat(e)},writeDoubleField:function(t,e){this.writeTag(t,i.Fixed64),this.writeDouble(e)},writeBooleanField:function(t,e){this.writeVarintField(t,Boolean(e))}}},function(t,e,r){"use strict";(function(t){function n(){var e='var e="function"==typeof Object.assign?Object.assign:function(e,n){if(null==e)throw new TypeError("Cannot convert undefined or null to object");for(var t=Object(e),r=1,o=arguments.length;r{const o=this.httpApi.get({...this.parsedUrl,headers:e},e=>{const r=new Promise(r=>{const n=[];e.on("data",t=>{n.push(t)}),e.on("end",()=>{const e=t.concat(n).buffer;r(e)}),e.on("error",i)});n(new h(e,r))});o.on("error",i),r&&(r.aborted&&o.destroy(new c.a("Request aborted")),r.addEventListener("abort",()=>o.destroy(new c.a("Request aborted"))))})}async request({headers:t,signal:e}={}){return await this.constructRequest(t,e)}}}).call(this,r(67).Buffer)},function(t,e){},function(t,e){},function(t,e){},function(t,e,r){"use strict";(function(t){r.d(e,"a",(function(){return s}));var n=r(89),i=r.n(n),o=r(56);class a extends o.a{constructor(t){super(),this.path=t,this.openRequest=function(t,e,r){return new Promise((n,o)=>{i.a.open(t,e,r,(t,e)=>{t?o(t):n(e)})})}(t,"r")}async fetchSlice(e){const r=await this.openRequest,{buffer:n}=await function(...t){return new Promise((e,r)=>{i.a.read(...t,(t,n,i)=>{t?r(t):e({bytesRead:n,buffer:i})})})}(r,t.alloc(e.length),0,e.length,e.offset);return n.buffer}async close(){const t=await this.openRequest;await function(t){return new Promise((e,r)=>{i.a.close(t,t=>{t?r(t):e()})})}(t)}}function s(t){return new a(t)}}).call(this,r(67).Buffer)},function(t,e){t.exports=Worker},function(t,e,r){var n,i,o,a,s,l,u,c,h,f,p,d,g; +/* Copyright 2015-2021 Esri. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 @preserve */i={defaultNoDataValue:-34027999387901484e22,decode:function(t,e){var r=(e=e||{}).encodedMaskData||null===e.encodedMaskData,n=l(t,e.inputOffset||0,r),u=null!==e.noDataValue?e.noDataValue:i.defaultNoDataValue,c=o(n,e.pixelType||Float32Array,e.encodedMaskData,u,e.returnMask),h={width:n.width,height:n.height,pixelData:c.resultPixels,minValue:c.minValue,maxValue:n.pixels.maxValue,noDataValue:u};return c.resultMask&&(h.maskData=c.resultMask),e.returnEncodedMask&&n.mask&&(h.encodedMaskData=n.mask.bitset?n.mask.bitset:null),e.returnFileInfo&&(h.fileInfo=a(n),e.computeUsedBitDepths&&(h.fileInfo.bitDepths=s(n))),h}},o=function(t,e,r,n,i){var o,a,s,l=0,c=t.pixels.numBlocksX,h=t.pixels.numBlocksY,f=Math.floor(t.width/c),p=Math.floor(t.height/h),d=2*t.maxZError,g=Number.MAX_VALUE;r=r||(t.mask?t.mask.bitset:null),a=new e(t.width*t.height),i&&r&&(s=new Uint8Array(t.width*t.height));for(var y,m,_=new Float32Array(f*p),v=0;v<=h;v++){var b=v!==h?p:t.height%h;if(0!==b)for(var x=0;x<=c;x++){var w=x!==c?f:t.width%c;if(0!==w){var E,O,S,I,C=v*t.width*p+x*f,T=t.width-w,P=t.pixels.blocks[l];if(P.encoding<2?(0===P.encoding?E=P.rawData:(u(P.stuffedData,P.bitsPerPixel,P.numValidPixels,P.offset,d,_,t.pixels.maxValue),E=_),O=0):S=2===P.encoding?0:P.offset,r)for(m=0;m>3],I<<=7&C),y=0;y>3]),128&I?(s&&(s[C]=1),g=g>(o=P.encoding<2?E[O++]:S)?o:g,a[C++]=o):(s&&(s[C]=0),a[C++]=n),I<<=1;C+=T}else if(P.encoding<2)for(m=0;m(o=E[O++])?o:g,a[C++]=o;C+=T}else for(g=g>S?S:g,m=0;m0){var a=new Uint8Array(Math.ceil(n.width*n.height/8)),s=(o=new DataView(t,e,n.mask.numBytes)).getInt16(0,!0),l=2,u=0;do{if(s>0)for(;s--;)a[u++]=o.getUint8(l++);else{var c=o.getUint8(l++);for(s=-s;s--;)a[u++]=c}s=o.getInt16(l,!0),l+=2}while(l0?1:0),d=f+(n.height%f>0?1:0);n.pixels.blocks=new Array(p*d);for(var g=0,y=0;y3)throw"Invalid block encoding ("+b.encoding+")";if(2!==b.encoding){if(0!==x&&2!==x){if(x>>=6,b.offsetType=x,2===x)b.offset=o.getInt8(1),_++;else if(1===x)b.offset=o.getInt16(1,!0),_+=2;else{if(0!==x)throw"Invalid block offset type";b.offset=o.getFloat32(1,!0),_+=4}if(1===b.encoding)if(x=o.getUint8(_),_++,b.bitsPerPixel=63&x,x>>=6,b.numValidPixelsType=x,2===x)b.numValidPixels=o.getUint8(_),_++;else if(1===x)b.numValidPixels=o.getUint16(_,!0),_+=2;else{if(0!==x)throw"Invalid valid pixel count type";b.numValidPixels=o.getUint32(_,!0),_+=4}}var w;if(e+=_,3!==b.encoding)if(0===b.encoding){var E=(n.pixels.numBytes-1)/4;if(E!==Math.floor(E))throw"uncompressed block has invalid length";w=new ArrayBuffer(4*E),new Uint8Array(w).set(new Uint8Array(t,e,4*E));var O=new Float32Array(w);b.rawData=O,e+=4*E}else if(1===b.encoding){var S=Math.ceil(b.numValidPixels*b.bitsPerPixel/8),I=Math.ceil(S/4);w=new ArrayBuffer(4*I),new Uint8Array(w).set(new Uint8Array(t,e,S)),b.stuffedData=new Uint32Array(w),e+=S}}else e++}return n.eofOffset=e,n},u=function(t,e,r,n,i,o,a){var s,l,u,c=(1<=e)l=u>>>f-e&c,f-=e;else{var g=e-f;l=(u&c)<>>(f=32-g)}o[s]=l=r?(u=c>>>g-r&p,g-=r):(u=(c&p)<<(h=r-g)&p,u+=(c=t[d++])>>>(g=32-h)),e[l]=i[u];else for(f=Math.ceil((s-o)/a),l=0;l=r?(u=c>>>g-r&p,g-=r):(u=(c&p)<<(h=r-g)&p,u+=(c=t[d++])>>>(g=32-h)),e[l]=u=e?(f=a>>>h-e&s,h-=e):(f=(a&s)<<(c=e-h)&s,f+=(a=t[l++])>>>(h=32-c)),p[u]=f=r?(u=c>>>g&f,d-=r,g+=r):(u=c>>>g&f,d=32-(h=r-d),u|=((c=t[p++])&(1<=r?(u=c>>>g&f,d-=r,g+=r):(u=c>>>g&f,d=32-(h=r-d),u|=((c=t[p++])&(1<=e?(f=a>>>p&s,h-=e,p+=e):(f=a>>>p&s,h=32-(c=e-h),f|=((a=t[l++])&(1<=r?(o=a>>>c-r&l,c-=r):(o=(a&l)<<(s=r-c)&l,o+=(a=t[u++])>>>(c=32-s)),e[i]=o;return e},o=function(t,e,r,n){var i,o,a,s,l=(1<=r?(o=a>>>h&l,c-=r,h+=r):(o=a>>>h&l,c=32-(s=r-c),o|=((a=t[u++])&(1<=359?359:i;i-=a;do{e+=t[o++]<<8,r+=e+=t[o++]}while(--a);e=(65535&e)+(e>>>16),r=(65535&r)+(r>>>16)}return 1&n&&(r+=e+=t[o]<<8),((r=(65535&r)+(r>>>16))<<16|(e=(65535&e)+(e>>>16)))>>>0},readHeaderInfo:function(t,e){var r=e.ptr,n=new Uint8Array(t,r,6),i={};if(i.fileIdentifierString=String.fromCharCode.apply(null,n),0!==i.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+i.fileIdentifierString;r+=6;var o,a=new DataView(t,r,8),s=a.getInt32(0,!0);if(i.fileVersion=s,r+=4,s>=3&&(i.checksum=a.getUint32(4,!0),r+=4),a=new DataView(t,r,12),i.height=a.getUint32(0,!0),i.width=a.getUint32(4,!0),r+=8,s>=4?(i.numDims=a.getUint32(8,!0),r+=4):i.numDims=1,a=new DataView(t,r,40),i.numValidPixel=a.getUint32(0,!0),i.microBlockSize=a.getInt32(4,!0),i.blobSize=a.getInt32(8,!0),i.imageType=a.getInt32(12,!0),i.maxZError=a.getFloat64(16,!0),i.zMin=a.getFloat64(24,!0),i.zMax=a.getFloat64(32,!0),r+=40,e.headerInfo=i,e.ptr=r,s>=3&&(o=s>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(t,r-o,i.blobSize-14))!==i.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(t,e){var r=e.headerInfo,n=this.getDataTypeArray(r.imageType),i=r.numDims*this.getDataTypeSize(r.imageType),o=this.readSubArray(t,e.ptr,n,i),a=this.readSubArray(t,e.ptr+i,n,i);e.ptr+=2*i;var s,l=!0;for(s=0;s0){r=new Uint8Array(Math.ceil(a/8));var c=(l=new DataView(t,i,u.numBytes)).getInt16(0,!0),h=2,f=0,p=0;do{if(c>0)for(;c--;)r[f++]=l.getUint8(h++);else for(p=l.getUint8(h++),c=-c;c--;)r[f++]=p;c=l.getInt16(h,!0),h+=2}while(h>3],d<<=7&g):d=r[g>>3],128&d&&(n[g]=1);e.pixels.resultMask=n,u.bitset=r,i+=u.numBytes}return e.ptr=i,e.mask=u,!0},readDataOneSweep:function(t,e,r,n){var i,o=e.ptr,s=e.headerInfo,l=s.numDims,u=s.width*s.height,c=s.imageType,h=s.numValidPixel*a.getDataTypeSize(c)*l,f=e.pixels.resultMask;if(r===Uint8Array)i=new Uint8Array(t,o,h);else{var p=new ArrayBuffer(h);new Uint8Array(p).set(new Uint8Array(t,o,h)),i=new r(p)}if(i.length===u*l)e.pixels.resultPixels=n?a.swapDimensionOrder(i,u,l,r,!0):i;else{e.pixels.resultPixels=new r(u*l);var d=0,g=0,y=0,m=0;if(l>1){if(n){for(g=0;g=l)return!1;var u=new Uint32Array(l-o);a.decodeBits(t,e,u);var c,h,f,p,d=[];for(c=o;c0&&(d[h].second=_<>>32-p,32-b>=p?32===(b+=p)&&(b=0,_=v[++x]):(b+=p-32,_=v[++x],d[h].second|=_>>>32-b));var w=0,E=0,O=new s;for(c=0;c=r?r:w;var S,I,C,T,P,R=[];for(c=o;c0)if(S=[p,h],p<=E)for(I=d[h].second<=0;T--)I>>>T&1?(P.right||(P.right=new s),P=P.right):(P.left||(P.left=new s),P=P.left),0!==T||P.val||(P.val=S[1]);return{decodeLut:R,numBitsLUTQick:E,numBitsLUT:w,tree:O,stuffedData:v,srcPtr:x,bitPos:b}},readHuffman:function(t,e,r,n){var i,o,s,l,u,c,h,f,p,d=e.headerInfo.numDims,g=e.headerInfo.height,y=e.headerInfo.width,m=y*g,_=this.readHuffmanTree(t,e),v=_.decodeLut,b=_.tree,x=_.stuffedData,w=_.srcPtr,E=_.bitPos,O=_.numBitsLUTQick,S=_.numBitsLUT,I=0===e.headerInfo.imageType?128:0,C=e.pixels.resultMask,T=0;E>0&&(w++,E=0);var P,R=x[w],L=1===e.encodeMode,M=new r(m*d),N=M;if(d<2||L){for(P=0;P1&&(N=new r(M.buffer,m*P,m),T=0),e.headerInfo.numValidPixel===y*g)for(f=0,c=0;c>>32-O,32-E>>64-E-O),v[u])o=v[u][1],E+=v[u][0];else for(u=l=R<>>32-S,32-E>>64-E-S),i=b,p=0;p>>S-p-1&1?i.right:i.left).left&&!i.right){o=i.val,E=E+p+1;break}E>=32&&(E-=32,R=x[++w]),s=o-I,L?(s+=h>0?T:c>0?N[f-y]:T,s&=255,N[f]=s,T=s):N[f]=s}else for(f=0,c=0;c>>32-O,32-E>>64-E-O),v[u])o=v[u][1],E+=v[u][0];else for(u=l=R<>>32-S,32-E>>64-E-S),i=b,p=0;p>>S-p-1&1?i.right:i.left).left&&!i.right){o=i.val,E=E+p+1;break}E>=32&&(E-=32,R=x[++w]),s=o-I,L?(h>0&&C[f-1]?s+=T:c>0&&C[f-y]?s+=N[f-y]:s+=T,s&=255,N[f]=s,T=s):N[f]=s}}else for(f=0,c=0;c>>32-O,32-E>>64-E-O),v[u])o=v[u][1],E+=v[u][0];else for(u=l=R<>>32-S,32-E>>64-E-S),i=b,p=0;p>>S-p-1&1?i.right:i.left).left&&!i.right){o=i.val,E=E+p+1;break}E>=32&&(E-=32,R=x[++w]),s=o-I,N[f]=s}e.ptr=e.ptr+4*(w+1)+(E>0?4:0),e.pixels.resultPixels=M,d>1&&!n&&(e.pixels.resultPixels=a.swapDimensionOrder(M,m,d,r))},decodeBits:function(a,s,l,u,c){var h=s.headerInfo,f=h.fileVersion,p=0,d=a.byteLength-s.ptr>=5?5:a.byteLength-s.ptr,g=new DataView(a,s.ptr,d),y=g.getUint8(0);p++;var m=y>>6,_=0===m?4:3-m,v=(32&y)>0,b=31&y,x=0;if(1===_)x=g.getUint8(p),p++;else if(2===_)x=g.getUint16(p,!0),p+=2;else{if(4!==_)throw"Invalid valid pixel count type";x=g.getUint32(p,!0),p+=4}var w,E,O,S,I,C,T,P,R,L=2*h.maxZError,M=h.numDims>1?h.maxValues[c]:h.zMax;if(v){for(s.counter.lut++,P=g.getUint8(p),p++,S=Math.ceil((P-1)*b/8),I=Math.ceil(S/4),E=new ArrayBuffer(4*I),O=new Uint8Array(E),s.ptr+=p,O.set(new Uint8Array(a,s.ptr,S)),T=new Uint32Array(E),s.ptr+=S,R=0;P-1>>>R;)R++;S=Math.ceil(x*R/8),I=Math.ceil(S/4),E=new ArrayBuffer(4*I),(O=new Uint8Array(E)).set(new Uint8Array(a,s.ptr,S)),w=new Uint32Array(E),s.ptr+=S,C=f>=3?n(T,b,P-1,u,L,M):e(T,b,P-1,u,L,M),f>=3?r(w,l,R,x,C):t(w,l,R,x,C)}else s.counter.bitstuffer++,R=b,s.ptr+=p,R>0&&(S=Math.ceil(x*R/8),I=Math.ceil(S/4),E=new ArrayBuffer(4*I),(O=new Uint8Array(E)).set(new Uint8Array(a,s.ptr,S)),w=new Uint32Array(E),s.ptr+=S,f>=3?null==u?o(w,l,R,x):r(w,l,R,x,!1,u,L,M):null==u?i(w,l,R,x):t(w,l,R,x,!1,u,L,M))},readTiles:function(t,e,r,n){var i=e.headerInfo,o=i.width,s=i.height,l=o*s,u=i.microBlockSize,c=i.imageType,h=a.getDataTypeSize(c),f=Math.ceil(o/u),p=Math.ceil(s/u);e.pixels.numBlocksY=p,e.pixels.numBlocksX=f,e.pixels.ptr=0;var d,g,y,m,_,v,b,x,w,E,O=0,S=0,I=0,C=0,T=0,P=0,R=0,L=0,M=0,N=0,A=0,k=0,j=0,F=0,D=0,G=new r(u*u),U=s%u||u,B=o%u||u,z=i.numDims,V=e.pixels.resultMask,q=e.pixels.resultPixels,Y=i.fileVersion>=5?14:15,W=i.zMax;for(I=0;I1?(E=q,N=I*o*u+C*u,q=new r(e.pixels.resultPixels.buffer,l*x*h,l),W=i.maxValues[x]):E=null,R=t.byteLength-e.ptr,g={},D=0,L=(d=new DataView(t,e.ptr,Math.min(10,R))).getUint8(0),D++,w=i.fileVersion>=5?4&L:0,M=L>>6&255,(L>>2&Y)!=(C*u>>3&Y))throw"integrity issue";if(w&&0===x)throw"integrity issue";if((_=3&L)>3)throw e.ptr+=D,"Invalid block encoding ("+_+")";if(2!==_)if(0===_){if(w)throw"integrity issue";if(e.counter.uncompressed++,e.ptr+=D,k=(k=T*P*h)<(j=t.byteLength-e.ptr)?k:j,y=new ArrayBuffer(k%h==0?k:k+h-k%h),new Uint8Array(y).set(new Uint8Array(t,e.ptr,k)),m=new r(y),F=0,V)for(O=0;O1&&!n&&(e.pixels.resultPixels=a.swapDimensionOrder(e.pixels.resultPixels,l,z,r))},formatFileInfo:function(t){return{fileIdentifierString:t.headerInfo.fileIdentifierString,fileVersion:t.headerInfo.fileVersion,imageType:t.headerInfo.imageType,height:t.headerInfo.height,width:t.headerInfo.width,numValidPixel:t.headerInfo.numValidPixel,microBlockSize:t.headerInfo.microBlockSize,blobSize:t.headerInfo.blobSize,maxZError:t.headerInfo.maxZError,pixelType:a.getPixelType(t.headerInfo.imageType),eofOffset:t.eofOffset,mask:t.mask?{numBytes:t.mask.numBytes}:null,pixels:{numBlocksX:t.pixels.numBlocksX,numBlocksY:t.pixels.numBlocksY,maxValue:t.headerInfo.zMax,minValue:t.headerInfo.zMin,noDataValue:t.noDataValue}}},constructConstantSurface:function(t,e){var r=t.headerInfo.zMax,n=t.headerInfo.zMin,i=t.headerInfo.maxValues,o=t.headerInfo.numDims,a=t.headerInfo.height*t.headerInfo.width,s=0,l=0,u=0,c=t.pixels.resultMask,h=t.pixels.resultPixels;if(c)if(o>1){if(e)for(s=0;s1&&n!==r)if(e)for(s=0;s=-128&&e<=127;break;case 1:r=e>=0&&e<=255;break;case 2:r=e>=-32768&&e<=32767;break;case 3:r=e>=0&&e<=65536;break;case 4:r=e>=-2147483648&&e<=2147483647;break;case 5:r=e>=0&&e<=4294967296;break;case 6:r=e>=-34027999387901484e22&&e<=34027999387901484e22;break;case 7:r=e>=-17976931348623157e292&&e<=17976931348623157e292;break;default:r=!1}return r},getDataTypeSize:function(t){var e=0;switch(t){case 0:case 1:e=1;break;case 2:case 3:e=2;break;case 4:case 5:case 6:e=4;break;case 7:e=8;break;default:e=t}return e},getDataTypeUsed:function(t,e){var r=t;switch(t){case 2:case 4:r=t-e;break;case 3:case 5:r=t-2*e;break;case 6:r=0===e?t:1===e?2:1;break;case 7:r=0===e?t:t-2*e+1;break;default:r=t}return r},getOnePixel:function(t,e,r,n){var i=0;switch(r){case 0:i=n.getInt8(e);break;case 1:i=n.getUint8(e);break;case 2:i=n.getInt16(e,!0);break;case 3:i=n.getUint16(e,!0);break;case 4:i=n.getInt32(e,!0);break;case 5:i=n.getUInt32(e,!0);break;case 6:i=n.getFloat32(e,!0);break;case 7:i=n.getFloat64(e,!0);break;default:throw"the decoder does not understand this pixel type"}return i},swapDimensionOrder:function(t,e,r,n,i){var o=0,a=0,s=0,l=0,u=t;if(r>1)if(u=new n(e*r),i)for(o=0;o5)throw"unsupported lerc version 2."+s;a.readMask(t,i),o.numValidPixel===o.width*o.height||i.pixels.resultMask||(i.pixels.resultMask=e.maskData);var u=o.width*o.height;i.pixels.resultPixels=new l(u*o.numDims),i.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var c,h=!e.returnPixelInterleavedDims;if(0!==o.numValidPixel)if(o.zMax===o.zMin)a.constructConstantSurface(i,h);else if(s>=4&&a.checkMinMaxRanges(t,i))a.constructConstantSurface(i,h);else{var f=new DataView(t,i.ptr,2),p=f.getUint8(0);if(i.ptr++,p)a.readDataOneSweep(t,i,l,h);else if(s>1&&o.imageType<=1&&Math.abs(o.maxZError-.5)<1e-5){var d=f.getUint8(1);if(i.ptr++,i.encodeMode=d,d>2||s<4&&d>1)throw"Invalid Huffman flag "+d;d?a.readHuffman(t,i,l,h):a.readTiles(t,i,l,h)}else a.readTiles(t,i,l,h)}i.eofOffset=i.ptr,e.inputOffset?(c=i.headerInfo.blobSize+e.inputOffset-i.ptr,Math.abs(c)>=1&&(i.eofOffset=e.inputOffset+i.headerInfo.blobSize)):(c=i.headerInfo.blobSize-i.ptr,Math.abs(c)>=1&&(i.eofOffset=i.headerInfo.blobSize));var g={width:o.width,height:o.height,pixelData:i.pixels.resultPixels,minValue:o.zMin,maxValue:o.zMax,validPixelCount:o.numValidPixel,dimCount:o.numDims,dimStats:{minValues:o.minValues,maxValues:o.maxValues},maskData:i.pixels.resultMask};if(i.pixels.resultMask&&a.isValidPixelValue(o.imageType,r)){var y=i.pixels.resultMask;for(n=0;n1&&(u&&_.push(u),x.fileInfo.mask&&x.fileInfo.mask.numBytes>0&&b++),y++,v.pixels.push(x.pixelData),v.statistics.push({minValue:x.minValue,maxValue:x.maxValue,noDataValue:x.noDataValue,dimStats:x.dimStats})}if(n>1&&b>1){for(g=v.width*v.height,v.bandMasks=_,(u=new Uint8Array(g)).set(_[0]),c=1;c<_.length;c++)for(l=_[c],h=0;h=0?n=o:(n=r+o)<0&&(n=0);n=0?n=i:(n=r+i)<0&&(n=0);for(var o,a=[];n-1||o.indexOf(e)>-1)return!1;for(n in e){if(e.hasOwnProperty(n)!==t.hasOwnProperty(n))return!1;if(r(e[n])!==r(t[n]))return!1}for(n in t){if(e.hasOwnProperty(n)!==t.hasOwnProperty(n))return!1;if(r(e[n])!==r(t[n]))return!1;switch(r(t[n])){case"object":case"function":if(i.push(t),o.push(e),!Object.equals(t[n],e[n]))return!1;i.pop(),o.pop();break;default:if(t[n]!==e[n])return!1}}return!0})},function(t,e,r){"use strict";e.byteLength=function(t){var e=u(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,n=u(t),a=n[0],s=n[1],l=new o(function(t,e,r){return 3*(e+r)/4-r}(0,a,s)),c=0,h=s>0?a-4:a;for(r=0;r>16&255,l[c++]=e>>8&255,l[c++]=255&e;2===s&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,l[c++]=255&e);1===s&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,l[c++]=e>>8&255,l[c++]=255&e);return l},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o=[],a=16383,s=0,l=r-i;sl?l:s+a));1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"="));return o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,l=a.length;s0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function c(t,e,r){for(var i,o,a=[],s=e;s>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return a.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){const n=r(162),i=r(163);t.exports=function(t,e,r){const o=r&&r.debug||!1,a=r&&r.startIndex||0;o&&console.log("[xml-utils] starting findTagByName with",e," and ",r);const s=n(t,`<${e}[ >]`,a);if(o&&console.log("[xml-utils] start:",s),-1===s)return;const l=t.slice(s+e.length);let u=i(l,"^[^<]*[ /]>",0);const c=-1!==u&&"/"===l[u-1];o&&console.log("[xml-utils] selfClosing:",c),!1===c&&(u=i(l,"[ /]"+e+">",0));const h=s+e.length+u+1;if(o&&console.log("[xml-utils] end:",h),-1===h)return;const f=t.slice(s,h);let p;return p=c?null:f.slice(f.indexOf(">")+1,f.lastIndexOf("<")),{inner:p,outer:f,start:s,end:h}}},function(t,e){t.exports=function(t,e,r){const n=new RegExp(e).exec(t.slice(r));return n?r+n.index:-1}},function(t,e){t.exports=function(t,e,r){const n=new RegExp(e).exec(t.slice(r));return n?r+n.index+n[0].length-1:-1}},function(t,e,r){ +/** + * JSTS. See https://github.com/bjornharrtell/jsts + * https://github.com/bjornharrtell/jsts/blob/master/LICENSE_EDLv1.txt + * https://github.com/bjornharrtell/jsts/blob/master/LICENSE_EPLv1.txt + * https://github.com/bjornharrtell/jsts/blob/master/LICENSE_LICENSE_ES6_COLLECTIONS.txt + * @license + */ +!function(t){"use strict";"fill"in Array.prototype||Object.defineProperty(Array.prototype,"fill",{configurable:!0,value:function(t){if(null==this)throw new TypeError(this+" is not an object");var e=Object(this),r=Math.max(Math.min(e.length,9007199254740991),0)||0,n=1 in arguments&&parseInt(Number(arguments[1]),10)||0;n=n<0?Math.max(r+n,0):Math.min(n,r);var i=2 in arguments&&void 0!==arguments[2]?parseInt(Number(arguments[2]),10)||0:r;for(i=i<0?Math.max(r+arguments[2],0):Math.min(i,r);n0;r>>>=1)e+=(t.high&r)===r?"1":"0";for(r=2147483648;r>0;r>>>=1)e+=(t.low&r)===r?"1":"0";return e},i.isNaN=t=>Number.isNaN(t),i.isInfinite=t=>!Number.isFinite(t),i.MAX_VALUE=Number.MAX_VALUE,"function"==typeof Float64Array&&"function"==typeof Int32Array?(u=new Float64Array(1),c=new Int32Array(u.buffer),i.doubleToLongBits=function(t){u[0]=t;var e=0|c[0],r=0|c[1];return 2146435072==(2146435072&r)&&0!=(1048575&r)&&0!==e&&(e=0,r=2146959360),new n(r,e)},i.longBitsToDouble=function(t){return c[0]=t.low,c[1]=t.high,u[0]}):(o=Math.log2,a=Math.floor,s=Math.pow,l=function(){for(var t=53;t>0;t--){var e=s(2,t)-1;if(a(o(e))+1===t)return e}return 0}(),i.doubleToLongBits=function(t){var e,r,i,u,c,h,f,p,d;if(t<0||1/t===Number.NEGATIVE_INFINITY?(h=1<<31,t=-t):h=0,0===t)return new n(p=h,d=0);if(t===1/0)return new n(p=2146435072|h,d=0);if(t!=t)return new n(p=2146959360,d=0);if(u=0,d=0,(e=a(t))>1)if(e<=l)(u=a(o(e)))<=20?(d=0,p=e<<20-u&1048575):(d=e%(r=s(2,i=u-20))<<32-i,p=e/r&1048575);else for(i=e,d=0;0!==(i=a(r=i/2));)u++,d>>>=1,d|=(1&p)<<31,p>>>=1,r!==i&&(p|=524288);if(f=u+1023,c=0===e,e=t-e,u<52&&0!==e)for(i=0;;){if((r=2*e)>=1?(e=r-1,c?(f--,c=!1):(i<<=1,i|=1,u++)):(e=r,c?0==--f&&(u++,c=!1):(i<<=1,u++)),20===u)p|=i,i=0;else if(52===u){d|=i;break}if(1===r){u<20?p|=i<<20-u:u<52&&(d|=i<<52-u);break}}return p|=f<<20,new n(p|=h,d)},i.longBitsToDouble=function(t){var e,r,n,i,o=t.high,a=t.low;r=o&1<<31?-1:1,n=((2146435072&o)>>20)-1023,i=0,e=1<<19;for(var l=1;l<=20;l++)o&e&&(i+=s(2,-l)),e>>>=1;for(e=1<<31,l=21;l<=52;l++)a&e&&(i+=s(2,-l)),e>>>=1;if(-1023===n){if(0===i)return 0*r;n=-1022}else{if(1024===n)return 0===i?r/0:NaN;i+=1}return r*i*s(2,n)}),g.prototype=Object.create(Error.prototype),g.prototype.constructor=Error;class y extends g{constructor(){super(),y.constructor_.apply(this,arguments)}getClass(){return y}get interfaces_(){return[]}}y.constructor_=function(){if(0===arguments.length)g.constructor_.call(this);else if(1===arguments.length){let t=arguments[0];g.constructor_.call(this,t)}};class m{constructor(){m.constructor_.apply(this,arguments)}static shouldNeverReachHere(){if(0===arguments.length)m.shouldNeverReachHere(null);else if(1===arguments.length){let t=arguments[0];throw new y("Should never reach here"+(null!==t?": "+t:""))}}static isTrue(){if(1===arguments.length){let t=arguments[0];m.isTrue(t,null)}else if(2===arguments.length){let t=arguments[1];if(!arguments[0])throw null===t?new y:new y(t)}}static equals(){if(2===arguments.length){let t=arguments[0],e=arguments[1];m.equals(t,e,null)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];if(!e.equals(t))throw new y("Expected "+t+" but encountered "+e+(null!==r?": "+r:""))}}getClass(){return m}get interfaces_(){return[]}}m.constructor_=function(){};class _{constructor(){_.constructor_.apply(this,arguments)}static hashCode(){if(1===arguments.length&&"number"==typeof arguments[0]){let e=arguments[0];var t=i.doubleToLongBits(e);return Math.trunc(t^t>>>32)}}setOrdinate(t,e){switch(t){case _.X:this.x=e;break;case _.Y:this.y=e;break;case _.Z:this.z=e;break;default:throw new r("Invalid ordinate index: "+t)}}equals2D(){if(1===arguments.length){let t=arguments[0];return this.x===t.x&&this.y===t.y}if(2===arguments.length){let t=arguments[0],r=arguments[1];return!!e.equalsWithTolerance(this.x,t.x,r)&&!!e.equalsWithTolerance(this.y,t.y,r)}}getOrdinate(t){switch(t){case _.X:return this.x;case _.Y:return this.y;case _.Z:return this.z}throw new r("Invalid ordinate index: "+t)}equals3D(t){return this.x===t.x&&this.y===t.y&&(this.z===t.z||i.isNaN(this.z)&&i.isNaN(t.z))}equals(t){return t instanceof _&&this.equals2D(t)}equalInZ(t,r){return e.equalsWithTolerance(this.z,t.z,r)}compareTo(t){var e=t;return this.xe.x?1:this.ye.y?1:0}clone(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return m.shouldNeverReachHere("this shouldn't happen because this class is Cloneable"),null;throw t}}copy(){return new _(this)}toString(){return"("+this.x+", "+this.y+", "+this.z+")"}distance3D(t){var e=this.x-t.x,r=this.y-t.y,n=this.z-t.z;return Math.sqrt(e*e+r*r+n*n)}distance(t){var e=this.x-t.x,r=this.y-t.y;return Math.sqrt(e*e+r*r)}hashCode(){var t=17;return 37*(t=37*t+_.hashCode(this.x))+_.hashCode(this.y)}setCoordinate(t){this.x=t.x,this.y=t.y,this.z=t.z}getClass(){return _}get interfaces_(){return[h,f,d]}}class v{constructor(){v.constructor_.apply(this,arguments)}static compare(t,e){return te?1:i.isNaN(t)?i.isNaN(e)?0:-1:i.isNaN(e)?1:0}compare(t,e){var r=t,n=e,i=v.compare(r.x,n.x);if(0!==i)return i;var o=v.compare(r.y,n.y);return 0!==o?o:this._dimensionsToTest<=2?0:v.compare(r.z,n.z)}getClass(){return v}get interfaces_(){return[p]}}function b(t,e){return t.interfaces_&&t.interfaces_.indexOf(e)>-1}function x(){}function w(){}function E(t){this.message=t||""}function O(){}function S(t){this.message=t||""}function I(t){this.message=t||""}function C(){this.array_=[],arguments[0]instanceof w&&this.addAll(arguments[0])}v.constructor_=function(){if(this._dimensionsToTest=2,0===arguments.length)v.constructor_.call(this,2);else if(1===arguments.length){let t=arguments[0];if(2!==t&&3!==t)throw new r("only 2 or 3 dimensions may be specified");this._dimensionsToTest=t}},_.DimensionalComparator=v,_.constructor_=function(){if(this.x=null,this.y=null,this.z=null,0===arguments.length)_.constructor_.call(this,0,0);else if(1===arguments.length){let t=arguments[0];_.constructor_.call(this,t.x,t.y,t.z)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];_.constructor_.call(this,t,e,_.NULL_ORDINATE)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];this.x=t,this.y=e,this.z=r}},_.serialVersionUID=0x5cbf2c235c7e5800,_.NULL_ORDINATE=i.NaN,_.X=0,_.Y=1,_.Z=2,x.prototype.hasNext=function(){},x.prototype.next=function(){},x.prototype.remove=function(){},w.prototype.add=function(){},w.prototype.addAll=function(){},w.prototype.isEmpty=function(){},w.prototype.iterator=function(){},w.prototype.size=function(){},w.prototype.toArray=function(){},w.prototype.remove=function(){},E.prototype=new Error,E.prototype.name="IndexOutOfBoundsException",O.prototype=Object.create(w.prototype),O.prototype.constructor=O,O.prototype.get=function(){},O.prototype.set=function(){},O.prototype.isEmpty=function(){},S.prototype=new Error,S.prototype.name="NoSuchElementException",I.prototype=new Error,I.prototype.name="OperationNotSupported",C.prototype=Object.create(O.prototype),C.prototype.constructor=C,C.prototype.ensureCapacity=function(){},C.prototype.interfaces_=[O,w],C.prototype.add=function(t){return 1===arguments.length?this.array_.push(t):this.array_.splice(arguments[0],0,arguments[1]),!0},C.prototype.clear=function(){this.array_=[]},C.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},C.prototype.set=function(t,e){var r=this.array_[t];return this.array_[t]=e,r},C.prototype.iterator=function(){return new T(this)},C.prototype.get=function(t){if(t<0||t>=this.size())throw new E;return this.array_[t]},C.prototype.isEmpty=function(){return 0===this.array_.length},C.prototype.size=function(){return this.array_.length},C.prototype.toArray=function(){for(var t=[],e=0,r=this.array_.length;e=1&&this.get(this.size()-1).equals2D(t))return null;super.add.call(this,t)}else if(arguments[0]instanceof Object&&"boolean"==typeof arguments[1]){let t=arguments[0],e=arguments[1];return this.add(t,e),!0}}else if(3===arguments.length){if("boolean"==typeof arguments[2]&&arguments[0]instanceof Array&&"boolean"==typeof arguments[1]){let e=arguments[0],r=arguments[1];if(arguments[2])for(var t=0;t=0;t--)this.add(e[t],r);return!0}if("boolean"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof _){let t=arguments[0],r=arguments[1];if(!arguments[2]){var e=this.size();if(e>0){if(t>0&&this.get(t-1).equals2D(r))return null;if(to&&(r=-1),t=i;t!==o;t+=r)this.add(e[t],n);return!0}}closeRing(){this.size()>0&&this.add(new _(this.get(0)),!1)}getClass(){return P}get interfaces_(){return[]}}P.constructor_=function(){if(0===arguments.length);else if(1===arguments.length){let t=arguments[0];this.ensureCapacity(t.length),this.add(t,!0)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.ensureCapacity(t.length),this.add(t,e)}},P.coordArrayType=new Array(0).fill(null);class R{constructor(){R.constructor_.apply(this,arguments)}static intersects(){if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];return r.x>=(t.xe.x?t.x:e.x)&&r.y>=(t.ye.y?t.y:e.y)}if(4===arguments.length){let i=arguments[0],o=arguments[1],a=arguments[2],s=arguments[3];var t=Math.min(a.x,s.x),e=Math.max(a.x,s.x),r=Math.min(i.x,o.x),n=Math.max(i.x,o.x);return!(r>e||ne||nt._minx?this._minx:t._minx,r=this._miny>t._miny?this._miny:t._miny,n=this._maxx=this._minx&&t.getMaxX()<=this._maxx&&t.getMinY()>=this._miny&&t.getMaxY()<=this._maxy}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];return!this.isNull()&&t>=this._minx&&t<=this._maxx&&e>=this._miny&&e<=this._maxy}}intersects(){if(1===arguments.length){if(arguments[0]instanceof R){let t=arguments[0];return!this.isNull()&&!t.isNull()&&!(t._minx>this._maxx||t._maxxthis._maxy||t._maxythis._maxx||(t.x>e.x?t.x:e.x)this._maxy||(t.y>e.y?t.y:e.y)this._maxx||tthis._maxy||ethis._maxx&&(this._maxx=t._maxx),t._minythis._maxy&&(this._maxy=t._maxy))}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.isNull()?(this._minx=t,this._maxx=t,this._miny=e,this._maxy=e):(tthis._maxx&&(this._maxx=t),ethis._maxy&&(this._maxy=e))}}minExtent(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return te._minx?1:this._minye._miny?1:this._maxxe._maxx?1:this._maxye._maxy?1:0}translate(t,e){if(this.isNull())return null;this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)}toString(){return"Env["+this._minx+" : "+this._maxx+", "+this._miny+" : "+this._maxy+"]"}setToNull(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1}getHeight(){return this.isNull()?0:this._maxy-this._miny}maxExtent(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e}expandBy(){if(1===arguments.length){let t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];if(this.isNull())return null;this._minx-=t,this._maxx+=t,this._miny-=e,this._maxy+=e,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}}contains(){if(1===arguments.length){if(arguments[0]instanceof R){let t=arguments[0];return this.covers(t)}if(arguments[0]instanceof _){let t=arguments[0];return this.covers(t)}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];return this.covers(t,e)}}centre(){return this.isNull()?null:new _((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)}init(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof _){let t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof R){let t=arguments[0];this._minx=t._minx,this._maxx=t._maxx,this._miny=t._miny,this._maxy=t._maxy}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.init(t.x,e.x,t.y,e.y)}else if(4===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2],n=arguments[3];tt._maxx&&(e=this._minx-t._maxx);var r=0;return this._maxyt._maxy&&(r=this._miny-t._maxy),0===e?r:0===r?e:Math.sqrt(e*e+r*r)}hashCode(){var t=17;return 37*(t=37*(t=37*(t=37*t+_.hashCode(this._minx))+_.hashCode(this._maxx))+_.hashCode(this._miny))+_.hashCode(this._maxy)}getClass(){return R}get interfaces_(){return[h,d]}}function L(){}R.constructor_=function(){if(this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,0===arguments.length)this.init();else if(1===arguments.length){if(arguments[0]instanceof _){let t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof R){let t=arguments[0];this.init(t)}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.init(t.x,e.x,t.y,e.y)}else if(4===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2],n=arguments[3];this.init(t,e,r,n)}},R.serialVersionUID=0x51845cd552189800;class M extends L{constructor(){super(),M.constructor_.apply(this,arguments)}getClass(){return M}get interfaces_(){return[]}}function N(t){this.str=t}function A(t){this.value=t}function k(){}M.constructor_=function(){L.constructor_.call(this,"Projective point not representable on the Cartesian plane.")},N.prototype.append=function(t){this.str+=t},N.prototype.setCharAt=function(t,e){this.str=this.str.substr(0,t)+e+this.str.substr(t+1)},N.prototype.toString=function(t){return this.str},A.prototype.intValue=function(){return this.value},A.prototype.compareTo=function(t){return this.valuet?1:0},A.isNaN=t=>Number.isNaN(t),k.isWhitespace=t=>t<=32&&t>=0||127==t,k.toUpperCase=t=>t.toUpperCase();class j{constructor(){j.constructor_.apply(this,arguments)}static sqr(t){return j.valueOf(t).selfMultiply(t)}static valueOf(){if("string"==typeof arguments[0]){let t=arguments[0];return j.parse(t)}if("number"==typeof arguments[0])return new j(arguments[0])}static sqrt(t){return j.valueOf(t).sqrt()}static parse(t){for(var e=0,r=t.length;k.isWhitespace(t.charAt(e));)e++;var n=!1;if(e=r);){var u=t.charAt(e);if(e++,k.isDigit(u)){var c=u-"0";o.selfMultiply(j.TEN),o.selfAdd(c),a++}else{if("."!==u){if("e"===u||"E"===u){var h=t.substring(e);try{l=A.parseInt(h)}catch(e){throw e instanceof NumberFormatException?new NumberFormatException("Invalid exponent "+h+" in string "+t):e}break}throw new NumberFormatException("Unexpected character '"+u+"' at position "+e+" in string "+t)}s=a}}var f=o,p=a-s-l;if(0===p)f=o;else if(p>0){var d=j.TEN.pow(p);f=o.divide(d)}else p<0&&(d=j.TEN.pow(-p),f=o.multiply(d));return n?f.negate():f}static createNaN(){return new j(i.NaN,i.NaN)}static copy(t){return new j(t)}static magnitude(t){var e=Math.abs(t),r=Math.log(e)/Math.log(10),n=Math.trunc(Math.floor(r));return 10*Math.pow(10,n)<=e&&(n+=1),n}static stringOfChar(t,e){for(var r=new N,n=0;n9?(c=!0,h="9"):h="0"+u,a.append(h),r=r.subtract(j.valueOf(u)).multiply(j.TEN),c&&r.selfAdd(j.TEN);var f=!0,p=j.magnitude(r._hi);if(p<0&&Math.abs(p)>=s-l&&(f=!1),!f)break}return e[0]=n,a.toString()}sqr(){return this.multiply(this)}doubleValue(){return this._hi+this._lo}subtract(){if(arguments[0]instanceof j){let t=arguments[0];return this.add(t.negate())}if("number"==typeof arguments[0]){let t=arguments[0];return this.add(-t)}}equals(){if(1===arguments.length&&arguments[0]instanceof j){let t=arguments[0];return this._hi===t._hi&&this._lo===t._lo}}isZero(){return 0===this._hi&&0===this._lo}selfSubtract(){if(arguments[0]instanceof j){let t=arguments[0];return this.isNaN()?this:this.selfAdd(-t._hi,-t._lo)}if("number"==typeof arguments[0]){let t=arguments[0];return this.isNaN()?this:this.selfAdd(-t,0)}}getSpecialNumberString(){return this.isZero()?"0.0":this.isNaN()?"NaN ":null}min(t){return this.le(t)?this:t}selfDivide(){if(1===arguments.length){if(arguments[0]instanceof j){let t=arguments[0];return this.selfDivide(t._hi,t._lo)}if("number"==typeof arguments[0]){let t=arguments[0];return this.selfDivide(t,0)}}else if(2===arguments.length){let l=arguments[0],u=arguments[1];var t,e,r,n,i=null,o=null,a=null,s=null;return r=this._hi/l,s=(i=(a=j.SPLIT*r)-(i=a-r))*(o=(s=j.SPLIT*l)-(o=s-l))-(n=r*l)+i*(e=l-o)+(t=r-i)*o+t*e,s=r+(a=(this._hi-n-s+this._lo-r*u)/l),this._hi=s,this._lo=r-s+a,this}}dump(){return"DD<"+this._hi+", "+this._lo+">"}divide(){if(arguments[0]instanceof j){let i=arguments[0];var t,e,r,n,o=null,a=null,s=null,l=null;return t=(r=this._hi/i._hi)-(o=(s=j.SPLIT*r)-(o=s-r)),l=o*(a=(l=j.SPLIT*i._hi)-(a=l-i._hi))-(n=r*i._hi)+o*(e=i._hi-a)+t*a+t*e,s=(this._hi-n-l+this._lo-r*i._lo)/i._hi,new j(l=r+s,r-l+s)}if("number"==typeof arguments[0]){let t=arguments[0];return i.isNaN(t)?j.createNaN():j.copy(this).selfDivide(t,0)}}ge(t){return this._hi>t._hi||this._hi===t._hi&&this._lo>=t._lo}pow(t){if(0===t)return j.valueOf(1);var e=new j(this),r=j.valueOf(1),n=Math.abs(t);if(n>1)for(;n>0;)n%2==1&&r.selfMultiply(e),(n/=2)>0&&(e=e.sqr());else r=e;return t<0?r.reciprocal():r}ceil(){if(this.isNaN())return j.NaN;var t=Math.ceil(this._hi),e=0;return t===this._hi&&(e=Math.ceil(this._lo)),new j(t,e)}compareTo(t){var e=t;return this._hie._hi?1:this._loe._lo?1:0}rint(){return this.isNaN()?this:this.add(.5).floor()}setValue(){if(arguments[0]instanceof j){let t=arguments[0];return this.init(t),this}if("number"==typeof arguments[0]){let t=arguments[0];return this.init(t),this}}max(t){return this.ge(t)?this:t}sqrt(){if(this.isZero())return j.valueOf(0);if(this.isNegative())return j.NaN;var t=1/Math.sqrt(this._hi),e=this._hi*t,r=j.valueOf(e),n=this.subtract(r.sqr())._hi*(.5*t);return r.add(n)}selfAdd(){if(1===arguments.length){if(arguments[0]instanceof j){let t=arguments[0];return this.selfAdd(t._hi,t._lo)}if("number"==typeof arguments[0]){let a=arguments[0];var t=null,e=null,r=null,n=null,i=null,o=null;return n=(r=this._hi+a)-(i=r-this._hi),e=(o=(n=a-i+(this._hi-n))+this._lo)+(r-(t=r+o)),this._hi=t+e,this._lo=e+(t-this._hi),this}}else if(2===arguments.length){let c=arguments[0],h=arguments[1];t=null,e=null;var a,s=null;r=null,n=null,i=null,o=null,r=this._hi+c,a=this._lo+h,n=r-(i=r-this._hi),s=a-(o=a-this._lo);var l=(t=r+(i=(n=c-i+(this._hi-n))+a))+(i=(s=h-o+(this._lo-s))+(e=i+(r-t))),u=i+(t-l);return this._hi=l,this._lo=u,this}}selfMultiply(){if(1===arguments.length){if(arguments[0]instanceof j){let t=arguments[0];return this.selfMultiply(t._hi,t._lo)}if("number"==typeof arguments[0]){let t=arguments[0];return this.selfMultiply(t,0)}}else if(2===arguments.length){let l=arguments[0],u=arguments[1];var t,e,r=null,n=null,i=null,o=null;r=(i=j.SPLIT*this._hi)-this._hi,o=j.SPLIT*l,r=i-r,t=this._hi-r,n=o-l;var a=(i=this._hi*l)+(o=r*(n=o-n)-i+r*(e=l-n)+t*n+t*e+(this._hi*u+this._lo*l)),s=o+(r=i-a);return this._hi=a,this._lo=s,this}}selfSqr(){return this.selfMultiply(this)}floor(){if(this.isNaN())return j.NaN;var t=Math.floor(this._hi),e=0;return t===this._hi&&(e=Math.floor(this._lo)),new j(t,e)}negate(){return this.isNaN()?this:new j(-this._hi,-this._lo)}clone(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return null;throw t}}multiply(){if(arguments[0]instanceof j){let t=arguments[0];return t.isNaN()?j.createNaN():j.copy(this).selfMultiply(t)}if("number"==typeof arguments[0]){let t=arguments[0];return i.isNaN(t)?j.createNaN():j.copy(this).selfMultiply(t,0)}}isNaN(){return i.isNaN(this._hi)}intValue(){return Math.trunc(this._hi)}toString(){var t=j.magnitude(this._hi);return t>=-3&&t<=20?this.toStandardNotation():this.toSciNotation()}toStandardNotation(){var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),r=this.extractSignificantDigits(!0,e),n=e[0]+1,i=r;if("."===r.charAt(0))i="0"+r;else if(n<0)i="0."+j.stringOfChar("0",-n)+r;else if(-1===r.indexOf(".")){var o=n-r.length;i=r+j.stringOfChar("0",o)+".0"}return this.isNegative()?"-"+i:i}reciprocal(){var t,e,r,n,i=null,o=null,a=null,s=null;t=(r=1/this._hi)-(i=(a=j.SPLIT*r)-(i=a-r)),o=(s=j.SPLIT*this._hi)-this._hi;var l=r+(a=(1-(n=r*this._hi)-(s=i*(o=s-o)-n+i*(e=this._hi-o)+t*o+t*e)-r*this._lo)/this._hi);return new j(l,r-l+a)}toSciNotation(){if(this.isZero())return j.SCI_NOT_ZERO;var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),r=this.extractSignificantDigits(!1,e),n=j.SCI_NOT_EXPONENT_CHAR+e[0];if("0"===r.charAt(0))throw new IllegalStateException("Found leading zero: "+r);var i="";r.length>1&&(i=r.substring(1));var o=r.charAt(0)+"."+i;return this.isNegative()?"-"+o+n:o+n}abs(){return this.isNaN()?j.NaN:this.isNegative()?this.negate():new j(this)}isPositive(){return this._hi>0||0===this._hi&&this._lo>0}lt(t){return this._hit._hi||this._hi===t._hi&&this._lo>t._lo}isNegative(){return this._hi<0||0===this._hi&&this._lo<0}trunc(){return this.isNaN()?j.NaN:this.isPositive()?this.floor():this.ceil()}signum(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0}getClass(){return j}get interfaces_(){return[d,h,f]}}j.constructor_=function(){if(this._hi=0,this._lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if("number"==typeof arguments[0]){let t=arguments[0];this.init(t)}else if(arguments[0]instanceof j){let t=arguments[0];this.init(t)}else if("string"==typeof arguments[0]){let t=arguments[0];j.constructor_.call(this,j.parse(t))}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.init(t,e)}},j.PI=new j(3.141592653589793,12246467991473532e-32),j.TWO_PI=new j(6.283185307179586,24492935982947064e-32),j.PI_2=new j(1.5707963267948966,6123233995736766e-32),j.E=new j(2.718281828459045,14456468917292502e-32),j.NaN=new j(i.NaN,i.NaN),j.EPS=123259516440783e-46,j.SPLIT=134217729,j.MAX_PRINT_DIGITS=32,j.TEN=j.valueOf(10),j.ONE=j.valueOf(1),j.SCI_NOT_EXPONENT_CHAR="E",j.SCI_NOT_ZERO="0.0E0";class F{constructor(){F.constructor_.apply(this,arguments)}static orientationIndex(t,e,r){var n=F.orientationIndexFilter(t,e,r);if(n<=1)return n;var i=j.valueOf(e.x).selfAdd(-t.x),o=j.valueOf(e.y).selfAdd(-t.y),a=j.valueOf(r.x).selfAdd(-e.x),s=j.valueOf(r.y).selfAdd(-e.y);return i.selfMultiply(s).selfSubtract(o.selfMultiply(a)).signum()}static signOfDet2x2(){if(arguments[0]instanceof j){let t=arguments[1],e=arguments[2],r=arguments[3];return arguments[0].multiply(r).selfSubtract(t.multiply(e)).signum()}if("number"==typeof arguments[0]){let i=arguments[0],o=arguments[1],a=arguments[2],s=arguments[3];var t=j.valueOf(i),e=j.valueOf(o),r=j.valueOf(a),n=j.valueOf(s);return t.multiply(n).selfSubtract(e.multiply(r)).signum()}}static intersection(t,e,r,n){var i=j.valueOf(n.y).selfSubtract(r.y).selfMultiply(j.valueOf(e.x).selfSubtract(t.x)),o=j.valueOf(n.x).selfSubtract(r.x).selfMultiply(j.valueOf(e.y).selfSubtract(t.y)),a=i.subtract(o),s=j.valueOf(n.x).selfSubtract(r.x).selfMultiply(j.valueOf(t.y).selfSubtract(r.y)),l=j.valueOf(n.y).selfSubtract(r.y).selfMultiply(j.valueOf(t.x).selfSubtract(r.x)),u=s.subtract(l).selfDivide(a).doubleValue(),c=j.valueOf(t.x).selfAdd(j.valueOf(e.x).selfSubtract(t.x).selfMultiply(u)).doubleValue(),h=j.valueOf(e.x).selfSubtract(t.x).selfMultiply(j.valueOf(t.y).selfSubtract(r.y)),f=j.valueOf(e.y).selfSubtract(t.y).selfMultiply(j.valueOf(t.x).selfSubtract(r.x)),p=h.subtract(f).selfDivide(a).doubleValue(),d=j.valueOf(r.y).selfAdd(j.valueOf(n.y).selfSubtract(r.y).selfMultiply(p)).doubleValue();return new _(c,d)}static orientationIndexFilter(t,e,r){var n=null,i=(t.x-r.x)*(e.y-r.y),o=(t.y-r.y)*(e.x-r.x),a=i-o;if(i>0){if(o<=0)return F.signum(a);n=i+o}else{if(!(i<0))return F.signum(a);if(o>=0)return F.signum(a);n=-i-o}var s=F.DP_SAFE_EPSILON*n;return a>=s||-a>=s?F.signum(a):2}static signum(t){return t>0?1:t<0?-1:0}getClass(){return F}get interfaces_(){return[]}}F.constructor_=function(){},F.DP_SAFE_EPSILON=1e-15;class D{constructor(){D.constructor_.apply(this,arguments)}static index(t,e,r){return F.orientationIndex(t,e,r)}static isCCW(t){var e=t.length-1;if(e<3)throw new r("Ring has fewer than 4 points, so orientation cannot be determined");for(var n=t[0],i=0,o=1;o<=e;o++){var a=t[o];a.y>n.y&&(n=a,i=o)}var s=i;do{(s-=1)<0&&(s=e)}while(t[s].equals2D(n)&&s!==i);var l=i;do{l=(l+1)%e}while(t[l].equals2D(n)&&l!==i);var u=t[s],c=t[l];if(u.equals2D(n)||c.equals2D(n)||u.equals2D(c))return!1;var h=D.index(u,n,c);return 0===h?u.x>c.x:h>0}getClass(){return D}get interfaces_(){return[]}}function G(){}D.constructor_=function(){},D.CLOCKWISE=-1,D.RIGHT=D.CLOCKWISE,D.COUNTERCLOCKWISE=1,D.LEFT=D.COUNTERCLOCKWISE,D.COLLINEAR=0,D.STRAIGHT=D.COLLINEAR,G.arraycopy=(t,e,r,n,i)=>{let o=0;for(let a=e;a({"line.separator":"\n"}[t]);class U{constructor(){U.constructor_.apply(this,arguments)}static intersection(t,e,r,n){var o=t.y-e.y,a=e.x-t.x,s=t.x*e.y-e.x*t.y,l=r.y-n.y,u=n.x-r.x,c=r.x*n.y-n.x*r.y,h=o*u-l*a,f=(a*c-u*s)/h,p=(l*s-o*c)/h;if(i.isNaN(f)||i.isInfinite(f)||i.isNaN(p)||i.isInfinite(p))throw new M;return new _(f,p)}getY(){var t=this.y/this.w;if(i.isNaN(t)||i.isInfinite(t))throw new M;return t}getX(){var t=this.x/this.w;if(i.isNaN(t)||i.isInfinite(t))throw new M;return t}getCoordinate(){var t=new _;return t.x=this.getX(),t.y=this.getY(),t}getClass(){return U}get interfaces_(){return[]}}U.constructor_=function(){if(this.x=null,this.y=null,this.w=null,0===arguments.length)this.x=0,this.y=0,this.w=1;else if(1===arguments.length){let t=arguments[0];this.x=t.x,this.y=t.y,this.w=1}else if(2===arguments.length){if("number"==typeof arguments[0]&&"number"==typeof arguments[1]){let t=arguments[0],e=arguments[1];this.x=t,this.y=e,this.w=1}else if(arguments[0]instanceof U&&arguments[1]instanceof U){let t=arguments[0],e=arguments[1];this.x=t.y*e.w-e.y*t.w,this.y=e.x*t.w-t.x*e.w,this.w=t.x*e.y-e.x*t.y}else if(arguments[0]instanceof _&&arguments[1]instanceof _){let t=arguments[0],e=arguments[1];this.x=t.y-e.y,this.y=e.x-t.x,this.w=t.x*e.y-e.x*t.y}}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];this.x=t,this.y=e,this.w=r}else if(4===arguments.length){let a=arguments[0],s=arguments[1],l=arguments[2],u=arguments[3];var t=a.y-s.y,e=s.x-a.x,r=a.x*s.y-s.x*a.y,n=l.y-u.y,i=u.x-l.x,o=l.x*u.y-u.x*l.y;this.x=e*o-i*r,this.y=n*r-t*o,this.w=t*i-n*e}};class B{constructor(){B.constructor_.apply(this,arguments)}static log10(t){var e=Math.log(t);return i.isInfinite(e)||i.isNaN(e)?e:e/B.LOG_10}static min(t,e,r,n){var i=t;return er?r:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){let t=arguments[0],e=arguments[1],r=arguments[2];return tr?r:t}}static wrap(t,e){return t<0?e- -t%e:t%e}static max(){if(3===arguments.length){let e=arguments[1],r=arguments[2];return e>(t=arguments[0])&&(t=e),r>t&&(t=r),t}if(4===arguments.length){let e=arguments[1],r=arguments[2],n=arguments[3];var t;return e>(t=arguments[0])&&(t=e),r>t&&(t=r),n>t&&(t=n),t}}static average(t,e){return(t+e)/2}getClass(){return B}get interfaces_(){return[]}}B.constructor_=function(){},B.LOG_10=Math.log(10);class z{constructor(){z.constructor_.apply(this,arguments)}static segmentToSegment(t,e,r,n){if(t.equals(e))return z.pointToSegment(t,r,n);if(r.equals(n))return z.pointToSegment(n,t,e);var i=!1;if(R.intersects(t,e,r,n)){var o=(e.x-t.x)*(n.y-r.y)-(e.y-t.y)*(n.x-r.x);if(0===o)i=!0;else{var a=(t.y-r.y)*(n.x-r.x)-(t.x-r.x)*(n.y-r.y),s=((t.y-r.y)*(e.x-t.x)-(t.x-r.x)*(e.y-t.y))/o,l=a/o;(l<0||l>1||s<0||s>1)&&(i=!0)}}else i=!0;return i?B.min(z.pointToSegment(t,r,n),z.pointToSegment(e,r,n),z.pointToSegment(r,t,e),z.pointToSegment(n,t,e)):0}static pointToSegment(t,e,r){if(e.x===r.x&&e.y===r.y)return t.distance(e);var n=(r.x-e.x)*(r.x-e.x)+(r.y-e.y)*(r.y-e.y),i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;if(i<=0)return t.distance(e);if(i>=1)return t.distance(r);var o=((e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y))/n;return Math.abs(o)*Math.sqrt(n)}static pointToLinePerpendicular(t,e,r){var n=(r.x-e.x)*(r.x-e.x)+(r.y-e.y)*(r.y-e.y),i=((e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y))/n;return Math.abs(i)*Math.sqrt(n)}static pointToSegmentString(t,e){if(0===e.length)throw new r("Line array must contain at least one vertex");for(var n=t.distance(e[0]),i=0;i0}getClass(){return K}get interfaces_(){return[H]}}K.constructor_=function(){};class J{constructor(){J.constructor_.apply(this,arguments)}isInBoundary(t){return t>1}getClass(){return J}get interfaces_(){return[H]}}J.constructor_=function(){};class ${constructor(){$.constructor_.apply(this,arguments)}isInBoundary(t){return 1===t}getClass(){return $}get interfaces_(){return[H]}}$.constructor_=function(){},H.Mod2BoundaryNodeRule=Z,H.EndPointBoundaryNodeRule=K,H.MultiValentEndPointBoundaryNodeRule=J,H.MonoValentEndPointBoundaryNodeRule=$,H.constructor_=function(){},H.MOD2_BOUNDARY_RULE=new Z,H.ENDPOINT_BOUNDARY_RULE=new K,H.MULTIVALENT_ENDPOINT_BOUNDARY_RULE=new J,H.MONOVALENT_ENDPOINT_BOUNDARY_RULE=new $,H.OGC_SFS_BOUNDARY_RULE=H.MOD2_BOUNDARY_RULE;class Q{constructor(){Q.constructor_.apply(this,arguments)}static isRing(t){return!(t.length<4||!t[0].equals2D(t[t.length-1]))}static ptNotInList(t,e){for(var r=0;r=t?e:[]}static indexOf(t,e){for(var r=0;r0)&&(e=t[r]);return e}static extract(t,e,r){e=B.clamp(e,0,t.length);var n=(r=B.clamp(r,-1,t.length))-e+1;r<0&&(n=0),e>=t.length&&(n=0),rn.length)return 1;if(0===r.length)return 0;var i=Q.compare(r,n);return Q.isEqualReversed(r,n)?0:i}OLDcompare(t,e){var r=t,n=e;if(r.lengthn.length)return 1;if(0===r.length)return 0;for(var i=Q.increasingDirection(r),o=Q.increasingDirection(n),a=i>0?0:r.length-1,s=o>0?0:r.length-1,l=0;l0))return e.value;e=e.right}}return null},pt.prototype.put=function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:st,getValue(){return this.value},getKey(){return this.key}},this.size_=1,null;var r,n,i=this.root_;do{if(r=i,(n=t.compareTo(i.key))<0)i=i.left;else{if(!(n>0)){var o=i.value;return i.value=e,o}i=i.right}}while(null!==i);var a={key:t,left:null,right:null,value:e,parent:r,color:st,getValue(){return this.value},getKey(){return this.key}};return n<0?r.left=a:r.right=a,this.fixAfterInsertion(a),this.size_++,null},pt.prototype.fixAfterInsertion=function(t){for(t.color=1;null!=t&&t!=this.root_&&1==t.parent.color;){var e;ut(t)==ht(ut(ut(t)))?1==lt(e=ft(ut(ut(t))))?(ct(ut(t),st),ct(e,st),ct(ut(ut(t)),1),t=ut(ut(t))):(t==ft(ut(t))&&(t=ut(t),this.rotateLeft(t)),ct(ut(t),st),ct(ut(ut(t)),1),this.rotateRight(ut(ut(t)))):1==lt(e=ht(ut(ut(t))))?(ct(ut(t),st),ct(e,st),ct(ut(ut(t)),1),t=ut(ut(t))):(t==ht(ut(t))&&(t=ut(t),this.rotateRight(t)),ct(ut(t),st),ct(ut(ut(t)),1),this.rotateLeft(ut(ut(t))))}this.root_.color=st},pt.prototype.values=function(){var t=new C,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=pt.successor(e));)t.add(e.value);return t},pt.prototype.entrySet=function(){var t=new ot,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=pt.successor(e));)t.add(e);return t},pt.prototype.rotateLeft=function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.left==t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}},pt.prototype.rotateRight=function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.right==t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}},pt.prototype.getFirstEntry=function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t},pt.successor=function(t){if(null===t)return null;if(null!==t.right){for(var e=t.right;null!==e.left;)e=e.left;return e}e=t.parent;for(var r=t;null!==e&&r===e.right;)r=e,e=e.parent;return e},pt.prototype.size=function(){return this.size_},pt.prototype.containsKey=function(t){for(var e=this.root_;null!==e;){var r=t.compareTo(e.key);if(r<0)e=e.left;else{if(!(r>0))return!0;e=e.right}}return!1};class dt{constructor(){dt.constructor_.apply(this,arguments)}getClass(){return dt}get interfaces_(){return[]}}function gt(){}function yt(){this.array_=[],arguments[0]instanceof w&&this.addAll(arguments[0])}dt.constructor_=function(){},gt.prototype=new it,yt.prototype=new gt,yt.prototype.contains=function(t){for(var e=0,r=this.array_.length;e=0;){var a=i.substring(0,o);n.add(a),o=(i=i.substring(o+r)).indexOf(e)}i.length>0&&n.add(i);for(var s=new Array(n.size()).fill(null),l=0;l0)for(var o=i;o0&&r.append(" ");for(var i=0;i0&&r.append(","),r.append(Nt.toString(o.getOrdinate(n,i)))}return r.append(")"),r.toString()}}static ensureValidRing(t,e){var r=e.size();return 0===r?e:r<=3?kt.createClosedRing(t,e,4):e.getOrdinate(0,V.X)===e.getOrdinate(r-1,V.X)&&e.getOrdinate(0,V.Y)===e.getOrdinate(r-1,V.Y)?e:kt.createClosedRing(t,e,r+1)}static createClosedRing(t,e,r){var n=t.create(r,e.getDimension()),i=e.size();kt.copy(e,0,n,0,i);for(var o=i;o0){var r=this._points.copy();kt.reverse(r),this._points=r}return null}}}getCoordinate(){return this.isEmpty()?null:this._points.getCoordinate(0)}getBoundaryDimension(){return this.isClosed()?bt.FALSE:0}isClosed(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))}getEndPoint(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)}getTypeCode(){return W.TYPECODE_LINESTRING}getDimension(){return 1}getLength(){return Ct.ofLine(this._points)}getNumPoints(){return this._points.size()}reverse(){var t=this._points.copy();return kt.reverse(t),this.getFactory().createLineString(t)}compareToSameClass(){if(1===arguments.length){for(var t=arguments[0],e=0,r=0;e= 2)");this._points=t}isCoordinate(t){for(var e=0;e=1&&this.getCoordinateSequence().size()= 4)")}getGeometryType(){return W.TYPENAME_LINEARRING}copy(){return new Vt(this._points.copy(),this._factory)}getClass(){return Vt}get interfaces_(){return[]}}Vt.constructor_=function(){if(arguments[0]instanceof Array&&arguments[1]instanceof ae){let t=arguments[0],e=arguments[1];Vt.constructor_.call(this,e.getCoordinateSequenceFactory().create(t),e)}else if(b(arguments[0],V)&&arguments[1]instanceof ae){let t=arguments[0],e=arguments[1];jt.constructor_.call(this,t,e),this.validateConstruction()}},Vt.MINIMUM_VALID_SIZE=4,Vt.serialVersionUID=-0x3b229e262367a600;class qt extends Et{constructor(){super(),qt.constructor_.apply(this,arguments)}equalsExact(){if(2===arguments.length&&"number"==typeof arguments[1]&&arguments[0]instanceof W){let t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&super.equalsExact.call(this,t,e)}return super.equalsExact.apply(this,arguments)}getBoundaryDimension(){return 1}getTypeCode(){return W.TYPECODE_MULTIPOLYGON}getDimension(){return 2}reverse(){for(var t=this._geometries.length,e=new Array(t).fill(null),r=0;r0){var t=new At(17*this._coordinates.length);t.append("("),t.append(this._coordinates[0]);for(var e=1;e3&&(e=3),e<2?new Kt(t):new Kt(t,e)}}getClass(){return Jt}get interfaces_(){return[q,d]}}Jt.constructor_=function(){},Jt.serialVersionUID=-0x38e49fa6cf6f2e00,Jt.instanceObject=new Jt;var $t=Object.defineProperty,Qt=function(t,e){function r(t){if(!this||this.constructor!==r)return new r(t);this._keys=[],this._values=[],this._itp=[],this.objectOnly=e,t&&function(t){this.add?t.forEach(this.add,this):t.forEach((function(t){this.set(t[0],t[1])}),this)}.call(this,t)}return e||$t(t,"size",{get:ee}),t.constructor=r,r.prototype=t,r}({delete:function(t){return this.has(t)&&(this._keys.splice(mt,1),this._values.splice(mt,1),this._itp.forEach((function(t){mt-1},has:function(t){return function(t,e){if(this.objectOnly&&e!==Object(e))throw new TypeError("Invalid value used as weak collection key");if(e!=e||0===e)for(mt=t.length;mt--&&(r=t[mt])!==(n=e)&&(r==r||n==n););else mt=t.indexOf(e);var r,n;return mt>-1}.call(this,this._keys,t)},get:function(t){return this.has(t)?this._values[mt]:void 0},set:function(t,e){return this.has(t)?this._values[mt]=e:this._values[this._keys.push(t)-1]=e,this},keys:function(){return te(this._itp,this._keys)},values:function(){return te(this._itp,this._values)},entries:function(){return te(this._itp,this._keys,this._values)},forEach:function(t,e){for(var r=this.entries();;){var n=r.next();if(n.done)break;t.call(e,n.value[1],n.value[0],this)}},clear:function(){(this._keys||0).length=this._values.length=0}});function te(t,e,r){var n=[0],i=!1;return t.push(n),{next:function(){var o,a=n[0];return!i&&at.add(e)),t},ne.prototype.size=function(){return this.map_.size()};class ie{constructor(){ie.constructor_.apply(this,arguments)}static mostPrecise(t,e){return t.compareTo(e)>=0?t:e}equals(t){if(!(t instanceof ie))return!1;var e=t;return this._modelType===e._modelType&&this._scale===e._scale}compareTo(t){var e=t,r=this.getMaximumSignificantDigits(),n=e.getMaximumSignificantDigits();return new A(r).compareTo(new A(n))}getScale(){return this._scale}isFloating(){return this._modelType===ie.FLOATING||this._modelType===ie.FLOATING_SINGLE}getType(){return this._modelType}toString(){var t="UNKNOWN";return this._modelType===ie.FLOATING?t="Floating":this._modelType===ie.FLOATING_SINGLE?t="Floating-Single":this._modelType===ie.FIXED&&(t="Fixed (Scale="+this.getScale()+")"),t}makePrecise(){if("number"==typeof arguments[0]){let t=arguments[0];return i.isNaN(t)||this._modelType===ie.FLOATING_SINGLE?t:this._modelType===ie.FIXED?Math.round(t*this._scale)/this._scale:t}if(arguments[0]instanceof _){let t=arguments[0];if(this._modelType===ie.FLOATING)return null;t.x=this.makePrecise(t.x),t.y=this.makePrecise(t.y)}}getMaximumSignificantDigits(){var t=16;return this._modelType===ie.FLOATING?t=16:this._modelType===ie.FLOATING_SINGLE?t=6:this._modelType===ie.FIXED&&(t=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),t}setScale(t){this._scale=Math.abs(t)}getClass(){return ie}get interfaces_(){return[d,h]}}class oe{constructor(){oe.constructor_.apply(this,arguments)}readResolve(){return oe.nameToTypeMap.get(this._name)}toString(){return this._name}getClass(){return oe}get interfaces_(){return[d]}}oe.constructor_=function(){this._name=null;let t=arguments[0];this._name=t,oe.nameToTypeMap.put(t,this)},oe.serialVersionUID=-552860263173159e4,oe.nameToTypeMap=new ne,ie.Type=oe,ie.constructor_=function(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=ie.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof oe){let t=arguments[0];this._modelType=t,t===ie.FIXED&&this.setScale(1)}else if("number"==typeof arguments[0]){let t=arguments[0];this._modelType=ie.FIXED,this.setScale(t)}else if(arguments[0]instanceof ie){let t=arguments[0];this._modelType=t._modelType,this._scale=t._scale}},ie.serialVersionUID=0x6bee6404e9a25c00,ie.FIXED=new oe("FIXED"),ie.FLOATING=new oe("FLOATING"),ie.FLOATING_SINGLE=new oe("FLOATING SINGLE"),ie.maximumPreciseValue=9007199254740992;class ae{constructor(){ae.constructor_.apply(this,arguments)}static toMultiPolygonArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toGeometryArray(t){if(null===t)return null;var e=new Array(t.size()).fill(null);return t.toArray(e)}static getDefaultCoordinateSequenceFactory(){return Jt.instance()}static toMultiLineStringArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toLineStringArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toMultiPointArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toLinearRingArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toPointArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toPolygonArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static createPointFromInternalCoord(t,e){return e.getPrecisionModel().makePrecise(t),e.getFactory().createPoint(t)}toGeometry(t){return t.isNull()?this.createPoint():t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new _(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new _(t.getMinX(),t.getMinY()),new _(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new _(t.getMinX(),t.getMinY()),new _(t.getMinX(),t.getMaxY()),new _(t.getMaxX(),t.getMaxY()),new _(t.getMaxX(),t.getMinY()),new _(t.getMinX(),t.getMinY())]),null)}createLineString(){if(0===arguments.length)return this.createLineString(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){let t=arguments[0];return this.createLineString(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(b(arguments[0],V))return new jt(arguments[0],this)}}createMultiLineString(){return 0===arguments.length?new Ot(null,this):1===arguments.length?new Ot(arguments[0],this):void 0}buildGeometry(t){for(var e=null,r=!1,n=!1,i=t.iterator();i.hasNext();){var o=i.next(),a=o.getClass();null===e&&(e=a),a!==e&&(r=!0),o instanceof Et&&(n=!0)}if(null===e)return this.createGeometryCollection();if(r||n)return this.createGeometryCollection(ae.toGeometryArray(t));var s=t.iterator().next();if(t.size()>1){if(s instanceof Bt)return this.createMultiPolygon(ae.toPolygonArray(t));if(s instanceof jt)return this.createMultiLineString(ae.toLineStringArray(t));if(s instanceof Dt)return this.createMultiPoint(ae.toPointArray(t));m.shouldNeverReachHere("Unhandled class: "+s.getClass().getName())}return s}createMultiPointFromCoords(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)}createPoint(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof _){let t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(b(arguments[0],V))return new Dt(arguments[0],this)}}getCoordinateSequenceFactory(){return this._coordinateSequenceFactory}createPolygon(){if(0===arguments.length)return this.createPolygon(null,null);if(1===arguments.length){if(b(arguments[0],V)){let t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){let t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Vt){let t=arguments[0];return this.createPolygon(t,null)}}else if(2===arguments.length)return new Bt(arguments[0],arguments[1],this)}getSRID(){return this._SRID}createGeometryCollection(){return 0===arguments.length?new Et(null,this):1===arguments.length?new Et(arguments[0],this):void 0}createGeometry(t){return new Yt(this).edit(t,new class{edit(){if(2===arguments.length&&arguments[1]instanceof W&&b(arguments[0],V)){let t=arguments[0];return this._coordinateSequenceFactory.create(t)}}})}getPrecisionModel(){return this._precisionModel}createLinearRing(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){let t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(b(arguments[0],V))return new Vt(arguments[0],this)}}createMultiPolygon(){return 0===arguments.length?new qt(null,this):1===arguments.length?new qt(arguments[0],this):void 0}createMultiPoint(){if(0===arguments.length)return new zt(null,this);if(1===arguments.length){if(arguments[0]instanceof Array)return new zt(arguments[0],this);if(b(arguments[0],V)){let n=arguments[0];if(null===n)return this.createMultiPoint(new Array(0).fill(null));for(var t=new Array(n.size()).fill(null),e=0;et.x+" "+t.y,point(t){return ue.coordinate.call(this,t._coordinates._coordinates[0])},multipoint(t){var e=[];for(let r=0,n=t._geometries.length;ri?n:i;else{var a=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y);0!==(o=n>i?a:s)||t.equals(e)||(o=Math.max(a,s))}return m.isTrue(!(0===o&&!t.equals(e)),"Bad distance calculation"),o}static nonRobustComputeEdgeDistance(t,e,r){var n=t.x-e.x,i=t.y-e.y,o=Math.sqrt(n*n+i*i);return m.isTrue(!(0===o&&!t.equals(e)),"Invalid distance calculation"),o}getIndexAlongSegment(t,e){return this.computeIntLineIndex(),this._intLineIndex[t][e]}getTopologySummary(){var t=new At;return this.isEndPoint()&&t.append(" endpoint"),this._isProper&&t.append(" proper"),this.isCollinear()&&t.append(" collinear"),t.toString()}computeIntersection(t,e,r,n){this._inputLines[0][0]=t,this._inputLines[0][1]=e,this._inputLines[1][0]=r,this._inputLines[1][1]=n,this._result=this.computeIntersect(t,e,r,n)}getIntersectionNum(){return this._result}computeIntLineIndex(){if(0===arguments.length)null===this._intLineIndex&&(this._intLineIndex=Array(2).fill().map(()=>Array(2)),this.computeIntLineIndex(0),this.computeIntLineIndex(1));else if(1===arguments.length){let t=arguments[0];this.getEdgeDistance(t,0)>this.getEdgeDistance(t,1)?(this._intLineIndex[t][0]=0,this._intLineIndex[t][1]=1):(this._intLineIndex[t][0]=1,this._intLineIndex[t][1]=0)}}isProper(){return this.hasIntersection()&&this._isProper}setPrecisionModel(t){this._precisionModel=t}isInteriorIntersection(){if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){let e=arguments[0];for(var t=0;tArray(2)),this._intPt=new Array(2).fill(null),this._intLineIndex=null,this._isProper=null,this._pa=null,this._pb=null,this._precisionModel=null,this._intPt[0]=new _,this._intPt[1]=new _,this._pa=this._intPt[0],this._pb=this._intPt[1],this._result=0},fe.DONT_INTERSECT=0,fe.DO_INTERSECT=1,fe.COLLINEAR=2,fe.NO_INTERSECTION=0,fe.POINT_INTERSECTION=1,fe.COLLINEAR_INTERSECTION=2;class pe extends fe{constructor(){super(),pe.constructor_.apply(this,arguments)}static nearestEndpoint(t,e,r,n){var i=t,o=z.pointToSegment(t,r,n),a=z.pointToSegment(e,r,n);return a1e-4&&G.out.println("Distance = "+i.distance(o))}intersectionWithNormalization(t,e,r,n){var i=new _(t),o=new _(e),a=new _(r),s=new _(n),l=new _;this.normalizeToEnvCentre(i,o,a,s,l);var u=this.safeHCoordinateIntersection(i,o,a,s);return u.x+=l.x,u.y+=l.y,u}computeCollinearIntersection(t,e,r,n){var i=R.intersects(t,e,r),o=R.intersects(t,e,n),a=R.intersects(r,n,t),s=R.intersects(r,n,e);return i&&o?(this._intPt[0]=r,this._intPt[1]=n,fe.COLLINEAR_INTERSECTION):a&&s?(this._intPt[0]=t,this._intPt[1]=e,fe.COLLINEAR_INTERSECTION):i&&a?(this._intPt[0]=r,this._intPt[1]=t,!r.equals(t)||o||s?fe.COLLINEAR_INTERSECTION:fe.POINT_INTERSECTION):i&&s?(this._intPt[0]=r,this._intPt[1]=e,!r.equals(e)||o||a?fe.COLLINEAR_INTERSECTION:fe.POINT_INTERSECTION):o&&a?(this._intPt[0]=n,this._intPt[1]=t,!n.equals(t)||i||s?fe.COLLINEAR_INTERSECTION:fe.POINT_INTERSECTION):o&&s?(this._intPt[0]=n,this._intPt[1]=e,!n.equals(e)||i||a?fe.COLLINEAR_INTERSECTION:fe.POINT_INTERSECTION):fe.NO_INTERSECTION}normalizeToEnvCentre(t,e,r,n,i){var o=t.xe.x?t.x:e.x,l=t.y>e.y?t.y:e.y,u=r.xn.x?r.x:n.x,f=r.y>n.y?r.y:n.y,p=((o>u?o:u)+(sc?a:c)+(l0&&o>0||i<0&&o<0)return fe.NO_INTERSECTION;var a=D.index(r,n,t),s=D.index(r,n,e);return a>0&&s>0||a<0&&s<0?fe.NO_INTERSECTION:0===i&&0===o&&0===a&&0===s?this.computeCollinearIntersection(t,e,r,n):(0===i||0===o||0===a||0===s?(this._isProper=!1,t.equals2D(r)||t.equals2D(n)?this._intPt[0]=t:e.equals2D(r)||e.equals2D(n)?this._intPt[0]=e:0===i?this._intPt[0]=new _(r):0===o?this._intPt[0]=new _(n):0===a?this._intPt[0]=new _(t):0===s&&(this._intPt[0]=new _(e))):(this._isProper=!0,this._intPt[0]=this.intersection(t,e,r,n)),fe.POINT_INTERSECTION)}getClass(){return pe}get interfaces_(){return[]}}pe.constructor_=function(){};class de{constructor(){de.constructor_.apply(this,arguments)}static midPoint(t,e){return new _((t.x+e.x)/2,(t.y+e.y)/2)}minX(){return Math.min(this.p0.x,this.p1.x)}orientationIndex(){if(arguments[0]instanceof de){let r=arguments[0];var t=D.index(this.p0,this.p1,r.p0),e=D.index(this.p0,this.p1,r.p1);return t>=0&&e>=0||t<=0&&e<=0?Math.max(t,e):0}if(arguments[0]instanceof _){let t=arguments[0];return D.index(this.p0,this.p1,t)}}toGeometry(t){return t.createLineString([this.p0,this.p1])}isVertical(){return this.p0.x===this.p1.x}equals(t){if(!(t instanceof de))return!1;var e=t;return this.p0.equals(e.p0)&&this.p1.equals(e.p1)}intersection(t){var e=new pe;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null}project(){if(arguments[0]instanceof _){let r=arguments[0];if(r.equals(this.p0)||r.equals(this.p1))return new _(r);var t=this.projectionFactor(r),e=new _;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e}if(arguments[0]instanceof de){let t=arguments[0];var r=this.projectionFactor(t.p0),n=this.projectionFactor(t.p1);if(r>=1&&n>=1)return null;if(r<=0&&n<=0)return null;var i=this.project(t.p0);r<0&&(i=this.p0),r>1&&(i=this.p1);var o=this.project(t.p1);return n<0&&(o=this.p0),n>1&&(o=this.p1),new de(i,o)}}normalize(){this.p1.compareTo(this.p0)<0&&this.reverse()}angle(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)}getCoordinate(t){return 0===t?this.p0:this.p1}distancePerpendicular(t){return z.pointToLinePerpendicular(t,this.p0,this.p1)}minY(){return Math.min(this.p0.y,this.p1.y)}midPoint(){return de.midPoint(this.p0,this.p1)}projectionFactor(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,r=this.p1.y-this.p0.y,n=e*e+r*r;return n<=0?i.NaN:((t.x-this.p0.x)*e+(t.y-this.p0.y)*r)/n}closestPoints(t){var e=this.intersection(t);if(null!==e)return[e,e];var r=new Array(2).fill(null),n=i.MAX_VALUE,o=null,a=this.closestPoint(t.p0);n=a.distance(t.p0),r[0]=a,r[1]=t.p0;var s=this.closestPoint(t.p1);(o=s.distance(t.p1))0&&e<1?this.project(t):this.p0.distance(t)1||i.isNaN(e))&&(e=1),e}toString(){return"LINESTRING( "+this.p0.x+" "+this.p0.y+", "+this.p1.x+" "+this.p1.y+")"}isHorizontal(){return this.p0.y===this.p1.y}distance(){if(arguments[0]instanceof de){let t=arguments[0];return z.segmentToSegment(this.p0,this.p1,t.p0,t.p1)}if(arguments[0]instanceof _){let t=arguments[0];return z.pointToSegment(t,this.p0,this.p1)}}pointAlong(t){var e=new _;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e}hashCode(){var t=java.lang.Double.doubleToLongBits(this.p0.x);t^=31*java.lang.Double.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),r=java.lang.Double.doubleToLongBits(this.p1.x);return r^=31*java.lang.Double.doubleToLongBits(this.p1.y),e^Math.trunc(r)^Math.trunc(r>>32)}getClass(){return de}get interfaces_(){return[h,d]}}de.constructor_=function(){if(this.p0=null,this.p1=null,0===arguments.length)de.constructor_.call(this,new _,new _);else if(1===arguments.length){let t=arguments[0];de.constructor_.call(this,t.p0,t.p1)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.p0=t,this.p1=e}else if(4===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2],n=arguments[3];de.constructor_.call(this,new _(t,e),new _(r,n))}},de.serialVersionUID=0x2d2172135f411c00;class ge{constructor(){ge.constructor_.apply(this,arguments)}static toLocationSymbol(t){switch(t){case ge.EXTERIOR:return"e";case ge.BOUNDARY:return"b";case ge.INTERIOR:return"i";case ge.NONE:return"-"}throw new r("Unknown location value: "+t)}getClass(){return ge}get interfaces_(){return[]}}ge.constructor_=function(){},ge.INTERIOR=0,ge.BOUNDARY=1,ge.EXTERIOR=2,ge.NONE=-1;class ye{constructor(){ye.constructor_.apply(this,arguments)}static matches(){if(Number.isInteger(arguments[0])&&"string"==typeof arguments[1]){let t=arguments[0],e=arguments[1];return e===bt.SYM_DONTCARE||e===bt.SYM_TRUE&&(t>=0||t===bt.TRUE)||e===bt.SYM_FALSE&&t===bt.FALSE||e===bt.SYM_P&&t===bt.P||e===bt.SYM_L&&t===bt.L||e===bt.SYM_A&&t===bt.A}if("string"==typeof arguments[0]&&"string"==typeof arguments[1]){let t=arguments[1];return new ye(arguments[0]).matches(t)}}static isTrue(t){return t>=0||t===bt.TRUE}isIntersects(){return!this.isDisjoint()}isCovers(){return(ye.isTrue(this._matrix[ge.INTERIOR][ge.INTERIOR])||ye.isTrue(this._matrix[ge.INTERIOR][ge.BOUNDARY])||ye.isTrue(this._matrix[ge.BOUNDARY][ge.INTERIOR])||ye.isTrue(this._matrix[ge.BOUNDARY][ge.BOUNDARY]))&&this._matrix[ge.EXTERIOR][ge.INTERIOR]===bt.FALSE&&this._matrix[ge.EXTERIOR][ge.BOUNDARY]===bt.FALSE}isCoveredBy(){return(ye.isTrue(this._matrix[ge.INTERIOR][ge.INTERIOR])||ye.isTrue(this._matrix[ge.INTERIOR][ge.BOUNDARY])||ye.isTrue(this._matrix[ge.BOUNDARY][ge.INTERIOR])||ye.isTrue(this._matrix[ge.BOUNDARY][ge.BOUNDARY]))&&this._matrix[ge.INTERIOR][ge.EXTERIOR]===bt.FALSE&&this._matrix[ge.BOUNDARY][ge.EXTERIOR]===bt.FALSE}set(){if(1===arguments.length){let n=arguments[0];for(var t=0;t=0&&e>=0&&this.setAtLeast(t,e,r)}isWithin(){return ye.isTrue(this._matrix[ge.INTERIOR][ge.INTERIOR])&&this._matrix[ge.INTERIOR][ge.EXTERIOR]===bt.FALSE&&this._matrix[ge.BOUNDARY][ge.EXTERIOR]===bt.FALSE}isTouches(t,e){return t>e?this.isTouches(e,t):(t===bt.A&&e===bt.A||t===bt.L&&e===bt.L||t===bt.L&&e===bt.A||t===bt.P&&e===bt.A||t===bt.P&&e===bt.L)&&this._matrix[ge.INTERIOR][ge.INTERIOR]===bt.FALSE&&(ye.isTrue(this._matrix[ge.INTERIOR][ge.BOUNDARY])||ye.isTrue(this._matrix[ge.BOUNDARY][ge.INTERIOR])||ye.isTrue(this._matrix[ge.BOUNDARY][ge.BOUNDARY]))}isOverlaps(t,e){return t===bt.P&&e===bt.P||t===bt.A&&e===bt.A?ye.isTrue(this._matrix[ge.INTERIOR][ge.INTERIOR])&&ye.isTrue(this._matrix[ge.INTERIOR][ge.EXTERIOR])&&ye.isTrue(this._matrix[ge.EXTERIOR][ge.INTERIOR]):t===bt.L&&e===bt.L&&1===this._matrix[ge.INTERIOR][ge.INTERIOR]&&ye.isTrue(this._matrix[ge.INTERIOR][ge.EXTERIOR])&&ye.isTrue(this._matrix[ge.EXTERIOR][ge.INTERIOR])}isEquals(t,e){return t===e&&ye.isTrue(this._matrix[ge.INTERIOR][ge.INTERIOR])&&this._matrix[ge.INTERIOR][ge.EXTERIOR]===bt.FALSE&&this._matrix[ge.BOUNDARY][ge.EXTERIOR]===bt.FALSE&&this._matrix[ge.EXTERIOR][ge.INTERIOR]===bt.FALSE&&this._matrix[ge.EXTERIOR][ge.BOUNDARY]===bt.FALSE}toString(){for(var t=new At("123456789"),e=0;e<3;e++)for(var r=0;r<3;r++)t.setCharAt(3*e+r,bt.toDimensionSymbol(this._matrix[e][r]));return t.toString()}setAll(t){for(var e=0;e<3;e++)for(var r=0;r<3;r++)this._matrix[e][r]=t}get(t,e){return this._matrix[t][e]}transpose(){var t=this._matrix[1][0];return this._matrix[1][0]=this._matrix[0][1],this._matrix[0][1]=t,t=this._matrix[2][0],this._matrix[2][0]=this._matrix[0][2],this._matrix[0][2]=t,t=this._matrix[2][1],this._matrix[2][1]=this._matrix[1][2],this._matrix[1][2]=t,this}matches(t){if(9!==t.length)throw new r("Should be length 9: "+t);for(var e=0;e<3;e++)for(var n=0;n<3;n++)if(!ye.matches(this._matrix[e][n],t.charAt(3*e+n)))return!1;return!0}add(t){for(var e=0;e<3;e++)for(var r=0;r<3;r++)this.setAtLeast(e,r,t.get(e,r))}isDisjoint(){return this._matrix[ge.INTERIOR][ge.INTERIOR]===bt.FALSE&&this._matrix[ge.INTERIOR][ge.BOUNDARY]===bt.FALSE&&this._matrix[ge.BOUNDARY][ge.INTERIOR]===bt.FALSE&&this._matrix[ge.BOUNDARY][ge.BOUNDARY]===bt.FALSE}isCrosses(t,e){return t===bt.P&&e===bt.L||t===bt.P&&e===bt.A||t===bt.L&&e===bt.A?ye.isTrue(this._matrix[ge.INTERIOR][ge.INTERIOR])&&ye.isTrue(this._matrix[ge.INTERIOR][ge.EXTERIOR]):t===bt.L&&e===bt.P||t===bt.A&&e===bt.P||t===bt.A&&e===bt.L?ye.isTrue(this._matrix[ge.INTERIOR][ge.INTERIOR])&&ye.isTrue(this._matrix[ge.EXTERIOR][ge.INTERIOR]):t===bt.L&&e===bt.L&&0===this._matrix[ge.INTERIOR][ge.INTERIOR]}getClass(){return ye}get interfaces_(){return[f]}}ye.constructor_=function(){if(this._matrix=null,0===arguments.length)this._matrix=Array(3).fill().map(()=>Array(3)),this.setAll(bt.FALSE);else if(1===arguments.length)if("string"==typeof arguments[0]){let t=arguments[0];ye.constructor_.call(this),this.set(t)}else if(arguments[0]instanceof ye){let t=arguments[0];ye.constructor_.call(this),this._matrix[ge.INTERIOR][ge.INTERIOR]=t._matrix[ge.INTERIOR][ge.INTERIOR],this._matrix[ge.INTERIOR][ge.BOUNDARY]=t._matrix[ge.INTERIOR][ge.BOUNDARY],this._matrix[ge.INTERIOR][ge.EXTERIOR]=t._matrix[ge.INTERIOR][ge.EXTERIOR],this._matrix[ge.BOUNDARY][ge.INTERIOR]=t._matrix[ge.BOUNDARY][ge.INTERIOR],this._matrix[ge.BOUNDARY][ge.BOUNDARY]=t._matrix[ge.BOUNDARY][ge.BOUNDARY],this._matrix[ge.BOUNDARY][ge.EXTERIOR]=t._matrix[ge.BOUNDARY][ge.EXTERIOR],this._matrix[ge.EXTERIOR][ge.INTERIOR]=t._matrix[ge.EXTERIOR][ge.INTERIOR],this._matrix[ge.EXTERIOR][ge.BOUNDARY]=t._matrix[ge.EXTERIOR][ge.BOUNDARY],this._matrix[ge.EXTERIOR][ge.EXTERIOR]=t._matrix[ge.EXTERIOR][ge.EXTERIOR]}};class me{constructor(){me.constructor_.apply(this,arguments)}static toDegrees(t){return 180*t/Math.PI}static normalize(t){for(;t>Math.PI;)t-=me.PI_TIMES_2;for(;t<=-Math.PI;)t+=me.PI_TIMES_2;return t}static angle(){if(1===arguments.length){let t=arguments[0];return Math.atan2(t.y,t.x)}if(2===arguments.length){let r=arguments[0],n=arguments[1];var t=n.x-r.x,e=n.y-r.y;return Math.atan2(e,t)}}static isAcute(t,e,r){var n=t.x-e.x,i=t.y-e.y;return n*(r.x-e.x)+i*(r.y-e.y)>0}static isObtuse(t,e,r){var n=t.x-e.x,i=t.y-e.y;return n*(r.x-e.x)+i*(r.y-e.y)<0}static interiorAngle(t,e,r){var n=me.angle(e,t),i=me.angle(e,r);return Math.abs(i-n)}static normalizePositive(t){if(t<0){for(;t<0;)t+=me.PI_TIMES_2;t>=me.PI_TIMES_2&&(t=0)}else{for(;t>=me.PI_TIMES_2;)t-=me.PI_TIMES_2;t<0&&(t=0)}return t}static angleBetween(t,e,r){var n=me.angle(e,t),i=me.angle(e,r);return me.diff(n,i)}static diff(t,e){var r=null;return(r=tMath.PI&&(r=2*Math.PI-r),r}static toRadians(t){return t*Math.PI/180}static getTurn(t,e){var r=Math.sin(e-t);return r>0?me.COUNTERCLOCKWISE:r<0?me.CLOCKWISE:me.NONE}static angleBetweenOriented(t,e,r){var n=me.angle(e,t),i=me.angle(e,r)-n;return i<=-Math.PI?i+me.PI_TIMES_2:i>Math.PI?i-me.PI_TIMES_2:i}getClass(){return me}get interfaces_(){return[]}}me.constructor_=function(){},me.PI_TIMES_2=2*Math.PI,me.PI_OVER_2=Math.PI/2,me.PI_OVER_4=Math.PI/4,me.COUNTERCLOCKWISE=D.COUNTERCLOCKWISE,me.CLOCKWISE=D.CLOCKWISE,me.NONE=D.COLLINEAR;class _e{constructor(){_e.constructor_.apply(this,arguments)}static area(t,e,r){return Math.abs(((r.x-t.x)*(e.y-t.y)-(e.x-t.x)*(r.y-t.y))/2)}static signedArea(t,e,r){return((r.x-t.x)*(e.y-t.y)-(e.x-t.x)*(r.y-t.y))/2}static det(t,e,r,n){return t*n-e*r}static interpolateZ(t,e,r,n){var i=e.x,o=e.y,a=r.x-i,s=n.x-i,l=r.y-o,u=n.y-o,c=a*u-s*l,h=t.x-i,f=t.y-o,p=(u*h-s*f)/c,d=(-l*h+a*f)/c;return e.z+p*(r.z-e.z)+d*(n.z-e.z)}static longestSideLength(t,e,r){var n=t.distance(e),i=e.distance(r),o=r.distance(t),a=n;return i>a&&(a=i),o>a&&(a=o),a}static isAcute(t,e,r){return!!me.isAcute(t,e,r)&&!!me.isAcute(e,r,t)&&!!me.isAcute(r,t,e)}static circumcentre(t,e,r){var n=r.x,i=r.y,o=t.x-n,a=t.y-i,s=e.x-n,l=e.y-i,u=2*_e.det(o,a,s,l),c=_e.det(a,o*o+a*a,l,s*s+l*l),h=_e.det(o,o*o+a*a,s,s*s+l*l);return new _(n-c/u,i+h/u)}static perpendicularBisector(t,e){var r=e.x-t.x,n=e.y-t.y,i=new U(t.x+r/2,t.y+n/2,1),o=new U(t.x-n+r/2,t.y+r+n/2,1);return new U(i,o)}static angleBisector(t,e,r){var n=e.distance(t),i=n/(n+e.distance(r)),o=r.x-t.x,a=r.y-t.y;return new _(t.x+i*o,t.y+i*a)}static area3D(t,e,r){var n=e.x-t.x,i=e.y-t.y,o=e.z-t.z,a=r.x-t.x,s=r.y-t.y,l=r.z-t.z,u=i*l-o*s,c=o*a-n*l,h=n*s-i*a,f=u*u+c*c+h*h;return Math.sqrt(f)/2}static centroid(t,e,r){var n=(t.x+e.x+r.x)/3,i=(t.y+e.y+r.y)/3;return new _(n,i)}static inCentre(t,e,r){var n=e.distance(r),i=t.distance(r),o=t.distance(e),a=n+i+o,s=(n*t.x+i*e.x+o*r.x)/a,l=(n*t.y+i*e.y+o*r.y)/a;return new _(s,l)}area(){return _e.area(this.p0,this.p1,this.p2)}signedArea(){return _e.signedArea(this.p0,this.p1,this.p2)}interpolateZ(t){if(null===t)throw new r("Supplied point is null.");return _e.interpolateZ(t,this.p0,this.p1,this.p2)}longestSideLength(){return _e.longestSideLength(this.p0,this.p1,this.p2)}isAcute(){return _e.isAcute(this.p0,this.p1,this.p2)}circumcentre(){return _e.circumcentre(this.p0,this.p1,this.p2)}area3D(){return _e.area3D(this.p0,this.p1,this.p2)}centroid(){return _e.centroid(this.p0,this.p1,this.p2)}inCentre(){return _e.inCentre(this.p0,this.p1,this.p2)}getClass(){return _e}get interfaces_(){return[]}}_e.constructor_=function(){this.p0=null,this.p1=null,this.p2=null;let t=arguments[0],e=arguments[1],r=arguments[2];this.p0=t,this.p1=e,this.p2=r};var ve=Object.freeze({Coordinate:_,CoordinateList:P,Envelope:R,LineSegment:de,GeometryFactory:ae,Geometry:W,Point:Dt,LineString:jt,LinearRing:Vt,Polygon:Bt,GeometryCollection:Et,MultiPoint:zt,MultiLineString:Ot,MultiPolygon:qt,Dimension:bt,IntersectionMatrix:ye,PrecisionModel:ie,Location:ge,Triangle:_e});class be{constructor(){be.constructor_.apply(this,arguments)}getCoordinates(){return this._pt}getCoordinate(t){return this._pt[t]}setMinimum(){if(1===arguments.length){let t=arguments[0];this.setMinimum(t._pt[0],t._pt[1])}else if(2===arguments.length){let e=arguments[0],r=arguments[1];if(this._isNull)return this.initialize(e,r),null;var t=e.distance(r);tthis._distance&&this.initialize(e,r,t)}}getClass(){return be}get interfaces_(){return[]}}be.constructor_=function(){this._pt=[new _,new _],this._distance=i.NaN,this._isNull=!0};class xe{constructor(){xe.constructor_.apply(this,arguments)}static computeDistance(){if(arguments[2]instanceof be&&arguments[0]instanceof jt&&arguments[1]instanceof _){let i=arguments[0],o=arguments[1],a=arguments[2];for(var t=new de,e=i.getCoordinates(),r=0;r1||t<=0)throw new r("Fraction is not in range (0.0 - 1.0]");this._densifyFrac=t}compute(t,e){this.computeOrientedDistance(t,e,this._ptDist),this.computeOrientedDistance(e,t,this._ptDist)}distance(){return this.compute(this._g0,this._g1),this._ptDist.getDistance()}computeOrientedDistance(t,e,r){var n=new Ee(e);if(t.apply(n),r.setMaximum(n.getMaxPointDistance()),this._densifyFrac>0){var i=new Oe(e,this._densifyFrac);t.apply(i),r.setMaximum(i.getMaxPointDistance())}}orientedDistance(){return this.computeOrientedDistance(this._g0,this._g1,this._ptDist),this._ptDist.getDistance()}getClass(){return we}get interfaces_(){return[]}}class Ee{constructor(){Ee.constructor_.apply(this,arguments)}filter(t){this._minPtDist.initialize(),xe.computeDistance(this._geom,t,this._minPtDist),this._maxPtDist.setMaximum(this._minPtDist)}getMaxPointDistance(){return this._maxPtDist}getClass(){return Ee}get interfaces_(){return[X]}}Ee.constructor_=function(){this._maxPtDist=new be,this._minPtDist=new be,this._euclideanDist=new xe,this._geom=null;let t=arguments[0];this._geom=t};class Oe{constructor(){Oe.constructor_.apply(this,arguments)}filter(t,e){if(0===e)return null;for(var r=t.getCoordinate(e-1),n=t.getCoordinate(e),i=(n.x-r.x)/this._numSubSegs,o=(n.y-r.y)/this._numSubSegs,a=0;ae||this._maxo?1:0}getClass(){return Pe}get interfaces_(){return[p]}}Pe.constructor_=function(){},Te.NodeComparator=Pe,Te.constructor_=function(){this._min=i.POSITIVE_INFINITY,this._max=i.NEGATIVE_INFINITY};class Re extends Te{constructor(){super(),Re.constructor_.apply(this,arguments)}query(t,e,r){if(!this.intersects(t,e))return null;r.visitItem(this._item)}getClass(){return Re}get interfaces_(){return[]}}Re.constructor_=function(){this._item=null;let t=arguments[0],e=arguments[1],r=arguments[2];this._min=t,this._max=e,this._item=r};const Le={reverseOrder:function(){return{compare:(t,e)=>e.compareTo(t)}},min:function(t){return Le.sort(t),t.get(0)},sort:function(t,e){const r=t.toArray();e?vt.sort(r,e):vt.sort(r);const n=t.iterator();for(let t=0,e=r.length;tn&&(r=e.x,n=t.x),this._p.x>=r&&this._p.x<=n&&(this._isPointOnSegment=!0),null}if(t.y>this._p.y&&e.y<=this._p.y||e.y>this._p.y&&t.y<=this._p.y){var i=D.index(t,e,this._p);if(i===D.COLLINEAR)return this._isPointOnSegment=!0,null;e.y=this._max)throw new S;var t=this._parent.getGeometryN(this._index++);return t instanceof Et?(this._subcollectionIterator=new Be(t),this._subcollectionIterator.next()):t}remove(){throw new UnsupportedOperationException(this.getClass().getName())}hasNext(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)}getClass(){return Be}get interfaces_(){return[x]}}Be.constructor_=function(){this._parent=null,this._atStart=null,this._max=null,this._index=null,this._subcollectionIterator=null;let t=arguments[0];this._parent=t,this._atStart=!0,this._index=0,this._max=t.getNumGeometries()};class ze{constructor(){ze.constructor_.apply(this,arguments)}static locatePointInPolygon(t,e){if(e.isEmpty())return ge.EXTERIOR;var r=e.getExteriorRing(),n=ze.locatePointInRing(t,r);if(n!==ge.INTERIOR)return n;for(var i=0;i0&&this.addPoint(t[0])}addHole(t){for(var e=D.isCCW(t),r=0;r0)t.x=this._cg3.x/3/this._areasum2,t.y=this._cg3.y/3/this._areasum2;else if(this._totalLength>0)t.x=this._lineCentSum.x/this._totalLength,t.y=this._lineCentSum.y/this._totalLength;else{if(!(this._ptCount>0))return null;t.x=this._ptCentSum.x/this._ptCount,t.y=this._ptCentSum.y/this._ptCount}return t}addShell(t){t.length>0&&this.setAreaBasePoint(t[0]);for(var e=!D.isCCW(t),r=0;r=this.size())throw new IndexOutOfBoundsException;return this.array_[t]},Je.prototype.push=function(t){return this.array_.push(t),t},Je.prototype.pop=function(t){if(0===this.array_.length)throw new Ke;return this.array_.pop()},Je.prototype.peek=function(){if(0===this.array_.length)throw new Ke;return this.array_[this.array_.length-1]},Je.prototype.empty=function(){return 0===this.array_.length},Je.prototype.isEmpty=function(){return this.empty()},Je.prototype.search=function(t){return this.array_.indexOf(t)},Je.prototype.size=function(){return this.array_.length},Je.prototype.toArray=function(){for(var t=[],e=0,r=this.array_.length;e50&&(t=this.reduce(this._inputPts));var e=this.preSort(t),r=this.grahamScan(e),n=this.toCoordinateArray(r);return this.lineOrPolygon(n)}padArray3(t){for(var e=new Array(3).fill(null),r=0;re[2].y&&(e[2]=t[n]),t[n].x+t[n].y>e[3].x+e[3].y&&(e[3]=t[n]),t[n].x>e[4].x&&(e[4]=t[n]),t[n].x-t[n].y>e[5].x-e[5].y&&(e[5]=t[n]),t[n].y0;)e=r.pop();r.push(e),r.push(t[n])}return r.push(t[0]),r}getClass(){return Qe}get interfaces_(){return[]}}class tr{constructor(){tr.constructor_.apply(this,arguments)}static polarCompare(t,e,r){var n=e.x-t.x,i=e.y-t.y,o=r.x-t.x,a=r.y-t.y,s=D.index(t,e,r);if(s===D.COUNTERCLOCKWISE)return 1;if(s===D.CLOCKWISE)return-1;var l=n*n+i*i,u=o*o+a*a;return lu?1:0}compare(t,e){var r=t,n=e;return tr.polarCompare(this._origin,r,n)}getClass(){return tr}get interfaces_(){return[p]}}tr.constructor_=function(){this._origin=null;let t=arguments[0];this._origin=t},Qe.RadialComparator=tr,Qe.constructor_=function(){if(this._geomFactory=null,this._inputPts=null,1===arguments.length){let t=arguments[0];Qe.constructor_.call(this,Qe.extractCoordinates(t),t.getFactory())}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this._inputPts=$e.filterCoordinates(t),this._geomFactory=e}};class er{constructor(){er.constructor_.apply(this,arguments)}static centre(t){return new _(er.avg(t.getMinX(),t.getMaxX()),er.avg(t.getMinY(),t.getMaxY()))}static avg(t,e){return(t+e)/2}addPolygon(t){if(t.isEmpty())return null;var e=null,r=null,n=this.horizontalBisector(t);if(0===n.getLength())r=0,e=n.getCoordinate();else{var i=n.intersection(t),o=this.widestGeometry(i);r=o.getEnvelopeInternal().getWidth(),e=er.centre(o.getEnvelopeInternal())}(null===this._interiorPoint||r>this._maxWidth)&&(this._interiorPoint=e,this._maxWidth=r)}getInteriorPoint(){return this._interiorPoint}widestGeometry(){if(arguments[0]instanceof Et){let r=arguments[0];if(r.isEmpty())return r;for(var t=r.getGeometryN(0),e=1;et.getEnvelopeInternal().getWidth()&&(t=r.getGeometryN(e));return t}if(arguments[0]instanceof W){let t=arguments[0];return t instanceof Et?this.widestGeometry(t):t}}horizontalBisector(t){var e=t.getEnvelopeInternal(),r=rr.getBisectorY(t);return this._factory.createLineString([new _(e.getMinX(),r),new _(e.getMaxX(),r)])}add(t){if(t instanceof Bt)this.addPolygon(t);else if(t instanceof Et)for(var e=t,r=0;rthis._loY&&(this._loY=t):t>this._centreY&&t=t.length&&(e=0),e}static computeC(t,e,r){return t*r.y-e*r.x}static getMinimumDiameter(t){return new ar(t).getDiameter()}static getMinimumRectangle(t){return new ar(t).getMinimumRectangle()}static computeSegmentForLine(t,e,r){var n=null,i=null;return Math.abs(e)>Math.abs(t)?(n=new _(0,r/e),i=new _(1,r/e-t/e)):(n=new _(r/t,0),i=new _(r/t-e/t,1)),new de(n,i)}getWidthCoordinate(){return this.computeMinimumDiameter(),this._minWidthPt}getSupportingSegment(){return this.computeMinimumDiameter(),this._inputGeom.getFactory().createLineString([this._minBaseSeg.p0,this._minBaseSeg.p1])}getDiameter(){if(this.computeMinimumDiameter(),null===this._minWidthPt)return this._inputGeom.getFactory().createLineString();var t=this._minBaseSeg.project(this._minWidthPt);return this._inputGeom.getFactory().createLineString([t,this._minWidthPt])}computeWidthConvex(t){this._convexHullPts=t instanceof Bt?t.getExteriorRing().getCoordinates():t.getCoordinates(),0===this._convexHullPts.length?(this._minWidth=0,this._minWidthPt=null,this._minBaseSeg=null):1===this._convexHullPts.length?(this._minWidth=0,this._minWidthPt=this._convexHullPts[0],this._minBaseSeg.p0=this._convexHullPts[0],this._minBaseSeg.p1=this._convexHullPts[0]):2===this._convexHullPts.length||3===this._convexHullPts.length?(this._minWidth=0,this._minWidthPt=this._convexHullPts[0],this._minBaseSeg.p0=this._convexHullPts[0],this._minBaseSeg.p1=this._convexHullPts[1]):this.computeConvexRingMinDiameter(this._convexHullPts)}computeConvexRingMinDiameter(t){this._minWidth=i.MAX_VALUE;for(var e=1,r=new de,n=0;n=n;)n=i,o=a,a=ar.nextIndex(t,o),i=e.distancePerpendicular(t[a]);return nn&&(n=l),la&&(a=u),u0&&n<4&&!this._preserveType?this._factory.createLineString(r):this._factory.createLinearRing(r)}getClass(){return lr}get interfaces_(){return[]}}lr.constructor_=function(){this._inputGeom=null,this._factory=null,this._pruneEmptyGeometry=!0,this._preserveGeometryCollectionType=!0,this._preserveCollections=!1,this._preserveType=!1};class ur{constructor(){ur.constructor_.apply(this,arguments)}static densifyPoints(t,e,r){for(var n=new de,i=new P,o=0;o1)for(var l=a/s,u=1;ue?t:e)?3:r}static isInHalfPlane(t,e){return e===fr.SE?t===fr.SE||t===fr.SW:t===e||t===e+1}static quadrant(){if("number"==typeof arguments[0]&&"number"==typeof arguments[1]){let t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new r("Cannot compute the quadrant for point ( "+t+", "+e+" )");return t>=0?e>=0?fr.NE:fr.SE:e>=0?fr.NW:fr.SW}if(arguments[0]instanceof _&&arguments[1]instanceof _){let t=arguments[0],e=arguments[1];if(e.x===t.x&&e.y===t.y)throw new r("Cannot compute the quadrant for two identical points "+t);return e.x>=t.x?e.y>=t.y?fr.NE:fr.SE:e.y>=t.y?fr.NW:fr.SW}}getClass(){return fr}get interfaces_(){return[]}}fr.constructor_=function(){},fr.NE=0,fr.NW=1,fr.SW=2,fr.SE=3;class pr{constructor(){pr.constructor_.apply(this,arguments)}static init(t,e){if(null!==t._sym||null!==e._sym||null!==t._next||null!==e._next)throw new IllegalStateException("Edges are already initialized");return t.init(e),t}static create(t,e){var r=new pr(t),n=new pr(e);return r.init(n),r}find(t){var e=this;do{if(null===e)return null;if(e.dest().equals2D(t))return e;e=e.oNext()}while(e!==this);return null}dest(){return this._sym._orig}oNext(){return this._sym._next}insert(t){if(this.oNext()===this)return this.insertAfter(t),null;var e=this.compareTo(t),r=this;do{var n=r.oNext();if(n.compareTo(t)!==e||n===this)return r.insertAfter(t),null;r=n}while(r!==this);m.shouldNeverReachHere()}insertAfter(t){m.equals(this._orig,t.orig());var e=this.oNext();this._sym.setNext(t),t.sym().setNext(e)}degree(){var t=0,e=this;do{t++,e=e.oNext()}while(e!==this);return t}equals(){if(2===arguments.length&&arguments[1]instanceof _&&arguments[0]instanceof _){let t=arguments[0],e=arguments[1];return this._orig.equals2D(t)&&this._sym._orig.equals(e)}}deltaY(){return this._sym._orig.y-this._orig.y}sym(){return this._sym}prev(){return this._sym.next()._sym}compareAngularDirection(t){var e=this.deltaX(),r=this.deltaY(),n=t.deltaX(),i=t.deltaY();if(e===n&&r===i)return 0;var o=fr.quadrant(e,r),a=fr.quadrant(n,i);return o>a?1:o0||this._isIn?ge.INTERIOR:ge.EXTERIOR)}getClass(){return br}get interfaces_(){return[]}}br.constructor_=function(){if(this._boundaryRule=H.OGC_SFS_BOUNDARY_RULE,this._isIn=null,this._numBoundaries=null,0===arguments.length);else if(1===arguments.length){let t=arguments[0];if(null===t)throw new r("Rule must be non-null");this._boundaryRule=t}};class xr{constructor(){xr.constructor_.apply(this,arguments)}static opposite(t){return t===xr.LEFT?xr.RIGHT:t===xr.RIGHT?xr.LEFT:t}getClass(){return xr}get interfaces_(){return[]}}xr.constructor_=function(){},xr.ON=0,xr.LEFT=1,xr.RIGHT=2;class wr{constructor(){wr.constructor_.apply(this,arguments)}computeIntersections(t,e){this.mce.computeIntersectsForChain(this.chainIndex,t.mce,t.chainIndex,e)}getClass(){return wr}get interfaces_(){return[]}}wr.constructor_=function(){this.mce=null,this.chainIndex=null;let t=arguments[0],e=arguments[1];this.mce=t,this.chainIndex=e};class Er{constructor(){Er.constructor_.apply(this,arguments)}isDelete(){return this._eventType===Er.DELETE}setDeleteEventIndex(t){this._deleteEventIndex=t}getObject(){return this._obj}compareTo(t){var e=t;return this._xValuee._xValue?1:this._eventTypee._eventType?1:0}getInsertEvent(){return this._insertEvent}isInsert(){return this._eventType===Er.INSERT}isSameLabel(t){return null!==this._label&&this._label===t._label}getDeleteEventIndex(){return this._deleteEventIndex}getClass(){return Er}get interfaces_(){return[h]}}Er.constructor_=function(){if(this._label=null,this._xValue=null,this._eventType=null,this._insertEvent=null,this._deleteEventIndex=null,this._obj=null,2===arguments.length){let t=arguments[0],e=arguments[1];this._eventType=Er.DELETE,this._xValue=t,this._insertEvent=e}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];this._eventType=Er.INSERT,this._label=t,this._xValue=e,this._obj=r}},Er.INSERT=1,Er.DELETE=2;class Or{constructor(){Or.constructor_.apply(this,arguments)}getClass(){return Or}get interfaces_(){return[]}}Or.constructor_=function(){};class Sr{constructor(){Sr.constructor_.apply(this,arguments)}static isAdjacentSegments(t,e){return 1===Math.abs(t-e)}isTrivialIntersection(t,e,r,n){if(t===r&&1===this._li.getIntersectionNum()){if(Sr.isAdjacentSegments(e,n))return!0;if(t.isClosed()){var i=t.getNumPoints()-1;if(0===e&&n===i||0===n&&e===i)return!0}}return!1}getProperIntersectionPoint(){return this._properIntersectionPoint}setIsDoneIfProperInt(t){this._isDoneWhenProperInt=t}hasProperInteriorIntersection(){return this._hasProperInterior}isBoundaryPointInternal(t,e){for(var r=e.iterator();r.hasNext();){var n=r.next().getCoordinate();if(t.isIntersection(n))return!0}return!1}hasProperIntersection(){return this._hasProper}hasIntersection(){return this._hasIntersection}isDone(){return this._isDone}isBoundaryPoint(t,e){return!(null===e||!this.isBoundaryPointInternal(t,e[0])&&!this.isBoundaryPointInternal(t,e[1]))}setBoundaryNodes(t,e){this._bdyNodes=new Array(2).fill(null),this._bdyNodes[0]=t,this._bdyNodes[1]=e}addIntersections(t,e,r,n){if(t===r&&e===n)return null;this.numTests++;var i=t.getCoordinates()[e],o=t.getCoordinates()[e+1],a=r.getCoordinates()[n],s=r.getCoordinates()[n+1];this._li.computeIntersection(i,o,a,s),this._li.hasIntersection()&&(this._recordIsolated&&(t.setIsolated(!1),r.setIsolated(!1)),this._numIntersections++,this.isTrivialIntersection(t,e,r,n)||(this._hasIntersection=!0,!this._includeProper&&this._li.isProper()||(t.addIntersections(this._li,e,0),r.addIntersections(this._li,n,1)),this._li.isProper()&&(this._properIntersectionPoint=this._li.getIntersection(0).copy(),this._hasProper=!0,this._isDoneWhenProperInt&&(this._isDone=!0),this.isBoundaryPoint(this._li,this._bdyNodes)||(this._hasProperInterior=!0))))}getClass(){return Sr}get interfaces_(){return[]}}Sr.constructor_=function(){this._hasIntersection=!1,this._hasProper=!1,this._hasProperInterior=!1,this._properIntersectionPoint=null,this._li=null,this._includeProper=null,this._recordIsolated=null,this._isSelfIntersection=null,this._numIntersections=0,this.numTests=0,this._bdyNodes=null,this._isDone=!1,this._isDoneWhenProperInt=!1;let t=arguments[0],e=arguments[1],r=arguments[2];this._li=t,this._includeProper=e,this._recordIsolated=r};class Ir extends Or{constructor(){super(),Ir.constructor_.apply(this,arguments)}prepareEvents(){Le.sort(this.events);for(var t=0;tthis.location.length){var e=new Array(3).fill(null);e[xr.ON]=this.location[xr.ON],e[xr.LEFT]=ge.NONE,e[xr.RIGHT]=ge.NONE,this.location=e}for(var r=0;r1&&t.append(ge.toLocationSymbol(this.location[xr.LEFT])),t.append(ge.toLocationSymbol(this.location[xr.ON])),this.location.length>1&&t.append(ge.toLocationSymbol(this.location[xr.RIGHT])),t.toString()}setLocations(t,e,r){this.location[xr.ON]=t,this.location[xr.LEFT]=e,this.location[xr.RIGHT]=r}get(t){return t1}isAnyNull(){for(var t=0;t0||!e.coord.equals2D(n);i||r--;var o=new Array(r).fill(null),a=0;o[a++]=new _(t.coord);for(var s=t.segmentIndex+1;s<=e.segmentIndex;s++)o[a++]=this.edge.pts[s];return i&&(o[a]=e.coord),new kr(o,new Tr(this.edge._label))}add(t,e,r){var n=new Pr(t,e,r),i=this._nodeMap.get(n);return null!==i?i:(this._nodeMap.put(n,n),n)}isIntersection(t){for(var e=this.iterator();e.hasNext();)if(e.next().coord.equals(t))return!0;return!1}getClass(){return Rr}get interfaces_(){return[]}}Rr.constructor_=function(){this._nodeMap=new pt,this.edge=null;let t=arguments[0];this.edge=t};class Lr{constructor(){Lr.constructor_.apply(this,arguments)}static toIntArray(t){for(var e=new Array(t.size()).fill(null),r=0;rr?e:r}getMinX(t){var e=this.pts[this.startIndex[t]].x,r=this.pts[this.startIndex[t+1]].x;return ee&&(n=1),this._depth[t][r]=n}}}getDelta(t){return this._depth[t][xr.RIGHT]-this._depth[t][xr.LEFT]}getLocation(t,e){return this._depth[t][e]<=0?ge.EXTERIOR:ge.INTERIOR}toString(){return"A: "+this._depth[0][1]+","+this._depth[0][2]+" B: "+this._depth[1][1]+","+this._depth[1][2]}add(){if(1===arguments.length){let n=arguments[0];for(var t=0;t<2;t++)for(var e=1;e<3;e++){var r=n.getLocation(t,e);r!==ge.EXTERIOR&&r!==ge.INTERIOR||(this.isNull(t,e)?this._depth[t][e]=Nr.depthAtLocation(r):this._depth[t][e]+=Nr.depthAtLocation(r))}}else if(3===arguments.length){let t=arguments[0],e=arguments[1];arguments[2]===ge.INTERIOR&&this._depth[t][e]++}}getClass(){return Nr}get interfaces_(){return[]}}Nr.constructor_=function(){this._depth=Array(2).fill().map(()=>Array(3));for(var t=0;t<2;t++)for(var e=0;e<3;e++)this._depth[t][e]=Nr.NULL_VALUE},Nr.NULL_VALUE=-1;class Ar{constructor(){Ar.constructor_.apply(this,arguments)}setVisited(t){this._isVisited=t}setInResult(t){this._isInResult=t}isCovered(){return this._isCovered}isCoveredSet(){return this._isCoveredSet}setLabel(t){this._label=t}getLabel(){return this._label}setCovered(t){this._isCovered=t,this._isCoveredSet=!0}updateIM(t){m.isTrue(this._label.getGeometryCount()>=2,"found partial label"),this.computeIM(t)}isInResult(){return this._isInResult}isVisited(){return this._isVisited}getClass(){return Ar}get interfaces_(){return[]}}Ar.constructor_=function(){if(this._label=null,this._isInResult=!1,this._isCovered=!1,this._isCoveredSet=!1,this._isVisited=!1,0===arguments.length);else if(1===arguments.length){let t=arguments[0];this._label=t}};class kr extends Ar{constructor(){super(),kr.constructor_.apply(this,arguments)}static updateIM(){if(!(2===arguments.length&&arguments[1]instanceof ye&&arguments[0]instanceof Tr))return super.updateIM.apply(this,arguments);{let t=arguments[0],e=arguments[1];e.setAtLeastIfValid(t.getLocation(0,xr.ON),t.getLocation(1,xr.ON),1),t.isArea()&&(e.setAtLeastIfValid(t.getLocation(0,xr.LEFT),t.getLocation(1,xr.LEFT),2),e.setAtLeastIfValid(t.getLocation(0,xr.RIGHT),t.getLocation(1,xr.RIGHT),2))}}getDepth(){return this._depth}getCollapsedEdge(){var t=new Array(2).fill(null);return t[0]=this.pts[0],t[1]=this.pts[1],new kr(t,Tr.toLineLabel(this._label))}isIsolated(){return this._isIsolated}getCoordinates(){return this.pts}setIsolated(t){this._isIsolated=t}setName(t){this._name=t}equals(t){if(!(t instanceof kr))return!1;var e=t;if(this.pts.length!==e.pts.length)return!1;for(var r=!0,n=!0,i=this.pts.length,o=0;o0?this.pts[0]:null;if(1===arguments.length){let t=arguments[0];return this.pts[t]}}print(t){t.print("edge "+this._name+": "),t.print("LINESTRING (");for(var e=0;e0&&t.print(","),t.print(this.pts[e].x+" "+this.pts[e].y);t.print(") "+this._label+" "+this._depthDelta)}computeIM(t){kr.updateIM(this._label,t)}isCollapsed(){return!!this._label.isArea()&&3===this.pts.length&&!!this.pts[0].equals(this.pts[2])}isClosed(){return this.pts[0].equals(this.pts[this.pts.length-1])}getMaximumSegmentIndex(){return this.pts.length-1}getDepthDelta(){return this._depthDelta}getNumPoints(){return this.pts.length}printReverse(t){t.print("edge "+this._name+": ");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+" ");t.println("")}getMonotoneChainEdge(){return null===this._mce&&(this._mce=new Mr(this)),this._mce}getEnvelope(){if(null===this._env){this._env=new R;for(var t=0;t0&&t.append(","),t.append(this.pts[e].x+" "+this.pts[e].y);return t.append(") "+this._label+" "+this._depthDelta),t.toString()}isPointwiseEqual(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;et._quadrant?1:this._quadrant=2,"found LineString with single point"),this.insertBoundaryPoint(this._argIndex,e[0]),this.insertBoundaryPoint(this._argIndex,e[e.length-1])}getInvalidPoint(){return this._invalidPoint}getBoundaryPoints(){for(var t=this.getBoundaryNodes(),e=new Array(t.size()).fill(null),r=0,n=t.iterator();n.hasNext();){var i=n.next();e[r++]=i.getCoordinate().copy()}return e}getBoundaryNodes(){return null===this._boundaryNodes&&(this._boundaryNodes=this._nodes.getBoundaryNodes(this._argIndex)),this._boundaryNodes}addSelfIntersectionNode(t,e,r){if(this.isBoundaryNode(t,e))return null;r===ge.BOUNDARY&&this._useBoundaryDeterminationRule?this.insertBoundaryPoint(t,e):this.insertPoint(t,e,r)}addPolygonRing(t,e,r){if(t.isEmpty())return null;var n=Q.removeRepeatedPoints(t.getCoordinates());if(n.length<4)return this._hasTooFewPoints=!0,this._invalidPoint=n[0],null;var i=e,o=r;D.isCCW(n)&&(i=r,o=e);var a=new kr(n,new Tr(this._argIndex,ge.BOUNDARY,i,o));this._lineEdgeMap.put(t,a),this.insertEdge(a),this.insertPoint(this._argIndex,n[0],ge.BOUNDARY)}insertPoint(t,e,r){var n=this._nodes.addNode(e),i=n.getLabel();null===i?n._label=new Tr(t,r):i.setLocation(t,r)}createEdgeSetIntersector(){return new Ir}addSelfIntersectionNodes(t){for(var e=this._edges.iterator();e.hasNext();)for(var r=e.next(),n=r.getLabel().getLocation(t),i=r.eiList.iterator();i.hasNext();){var o=i.next();this.addSelfIntersectionNode(t,o.coord,n)}}add(){if(!(1===arguments.length&&arguments[0]instanceof W))return super.add.apply(this,arguments);{let t=arguments[0];if(t.isEmpty())return null;if(t instanceof qt&&(this._useBoundaryDeterminationRule=!1),t instanceof Bt)this.addPolygon(t);else if(t instanceof jt)this.addLineString(t);else if(t instanceof Dt)this.addPoint(t);else if(t instanceof zt)this.addCollection(t);else if(t instanceof Ot)this.addCollection(t);else if(t instanceof qt)this.addCollection(t);else{if(!(t instanceof Et))throw new UnsupportedOperationException(t.getClass().getName());this.addCollection(t)}}}addCollection(t){for(var e=0;e50?(null===this._areaPtLocator&&(this._areaPtLocator=new Fe(this._parentGeom)),this._areaPtLocator.locate(t)):this._ptLocator.locate(t,this._parentGeom)}findEdge(){if(1===arguments.length&&arguments[0]instanceof jt){let t=arguments[0];return this._lineEdgeMap.get(t)}return super.findEdge.apply(this,arguments)}getClass(){return Vr}get interfaces_(){return[]}}Vr.constructor_=function(){if(this._parentGeom=null,this._lineEdgeMap=new ne,this._boundaryNodeRule=null,this._useBoundaryDeterminationRule=!0,this._argIndex=null,this._boundaryNodes=null,this._hasTooFewPoints=!1,this._invalidPoint=null,this._areaPtLocator=null,this._ptLocator=new br,2===arguments.length){let t=arguments[0],e=arguments[1];Vr.constructor_.call(this,t,e,H.OGC_SFS_BOUNDARY_RULE)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];this._argIndex=t,this._parentGeom=e,this._boundaryNodeRule=r,null!==e&&this.add(e)}};var qr=Object.freeze({GeometryGraph:Vr});class Yr{constructor(){Yr.constructor_.apply(this,arguments)}visit(t){}getClass(){return Yr}get interfaces_(){return[]}}Yr.constructor_=function(){};class Wr{constructor(){Wr.constructor_.apply(this,arguments)}isRepeated(){return this._count>1}getRight(){return this._right}getCoordinate(){return this._p}setLeft(t){this._left=t}getX(){return this._p.x}getData(){return this._data}getCount(){return this._count}getLeft(){return this._left}getY(){return this._p.y}increment(){this._count=this._count+1}setRight(t){this._right=t}getClass(){return Wr}get interfaces_(){return[]}}Wr.constructor_=function(){if(this._p=null,this._data=null,this._left=null,this._right=null,this._count=null,2===arguments.length){let t=arguments[0],e=arguments[1];this._p=new _(t),this._left=null,this._right=null,this._count=1,this._data=e}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];this._p=new _(t,e),this._left=null,this._right=null,this._count=1,this._data=r}};class Xr{constructor(){Xr.constructor_.apply(this,arguments)}static toCoordinates(){if(1===arguments.length){let t=arguments[0];return Xr.toCoordinates(t,!1)}if(2===arguments.length){let o=arguments[0],a=arguments[1];for(var t=new P,e=o.iterator();e.hasNext();)for(var r=e.next(),n=a?r.getCount():1,i=0;i0){var t=this.findBestMatchNode(e);if(null!==t)return t.increment(),t}return this.insertExact(e,r)}}query(){if(1===arguments.length){let e=arguments[0];var t=new C;return this.query(e,t),t}if(2===arguments.length)if(arguments[0]instanceof R&&b(arguments[1],O)){let t=arguments[0],e=arguments[1];this.queryNode(this._root,t,!0,new class{get interfaces_(){return[Yr]}visit(t){e.add(t)}})}else if(arguments[0]instanceof R&&b(arguments[1],Yr)){let t=arguments[0],e=arguments[1];this.queryNode(this._root,t,!0,e)}}queryNode(t,e,r,n){if(null===t)return null;var i=null,o=null,a=null;r?(i=e.getMinX(),o=e.getMaxX(),a=t.getX()):(i=e.getMinY(),o=e.getMaxY(),a=t.getY());var s=a<=o;i=e&&(t.getMinY()>=r&&(n=3),t.getMaxY()<=r&&(n=1)),t.getMaxX()<=e&&(t.getMinY()>=r&&(n=2),t.getMaxY()<=r&&(n=0)),n}hasChildren(){for(var t=0;t<4;t++)if(null!==this._subnode[t])return!0;return!1}isPrunable(){return!(this.hasChildren()||this.hasItems())}addAllItems(t){t.addAll(this._items);for(var e=0;e<4;e++)null!==this._subnode[e]&&this._subnode[e].addAllItems(t);return t}getNodeCount(){for(var t=0,e=0;e<4;e++)null!==this._subnode[e]&&(t+=this._subnode[e].size());return t+1}size(){for(var t=0,e=0;e<4;e++)null!==this._subnode[e]&&(t+=this._subnode[e].size());return t+this._items.size()}addAllItemsFromOverlapping(t,e){if(!this.isSearchMatch(t))return null;e.addAll(this._items);for(var r=0;r<4;r++)null!==this._subnode[r]&&this._subnode[r].addAllItemsFromOverlapping(t,e)}visitItems(t,e){for(var r=this._items.iterator();r.hasNext();)e.visitItem(r.next())}hasItems(){return!this._items.isEmpty()}remove(t,e){if(!this.isSearchMatch(t))return!1;for(var r=!1,n=0;n<4;n++)if(null!==this._subnode[n]&&(r=this._subnode[n].remove(t,e))){this._subnode[n].isPrunable()&&(this._subnode[n]=null);break}return r||this._items.remove(e)}visit(t,e){if(!this.isSearchMatch(t))return null;this.visitItems(t,e);for(var r=0;r<4;r++)null!==this._subnode[r]&&this._subnode[r].visit(t,e)}getItems(){return this._items}depth(){for(var t=0,e=0;e<4;e++)if(null!==this._subnode[e]){var r=this._subnode[e].depth();r>t&&(t=r)}return t+1}isEmpty(){var t=!0;if(this._items.isEmpty()){for(var e=0;e<4;e++)if(null!==this._subnode[e]&&!this._subnode[e].isEmpty()){t=!1;break}}else t=!1;return t}add(t){this._items.add(t)}getClass(){return Kr}get interfaces_(){return[d]}}function Jr(){}Kr.constructor_=function(){this._items=new C,this._subnode=new Array(4).fill(null)},Jr.exponent=function(t){return function(t,e){var r,n,i,o,a={32:8,64:11}[t];if(o||(r=e<0||1/e<0,isFinite(e)||(o={32:{d:127,c:128,b:0,a:0},64:{d:32752,c:0,b:0,a:0}}[t],r&&(o.d+=1<=2;)n++,i/=2;for(;i<1&&n>0;)n--,i*=2;n<=0&&(i/=2),32===t&&n>254&&(o={d:r?255:127,c:128,b:0,a:0},n=Math.pow(2,a)-1,i=0)}return n}(64,t)-1023},Jr.powerOf2=function(t){return Math.pow(2,t)};class $r{constructor(){$r.constructor_.apply(this,arguments)}static computeQuadLevel(t){var e=t.getWidth(),r=t.getHeight(),n=e>r?e:r;return Jr.exponent(n)+1}getLevel(){return this._level}computeKey(){if(1===arguments.length){let t=arguments[0];for(this._level=$r.computeQuadLevel(t),this._env=new R,this.computeKey(this._level,t);!this._env.contains(t);)this._level+=1,this.computeKey(this._level,t)}else if(2===arguments.length){let e=arguments[0],r=arguments[1];var t=Jr.powerOf2(e);this._pt.x=Math.floor(r.getMinX()/t)*t,this._pt.y=Math.floor(r.getMinY()/t)*t,this._env.init(this._pt.x,this._pt.x+t,this._pt.y,this._pt.y+t)}}getEnvelope(){return this._env}getCentre(){return new _((this._env.getMinX()+this._env.getMaxX())/2,(this._env.getMinY()+this._env.getMaxY())/2)}getPoint(){return this._pt}getClass(){return $r}get interfaces_(){return[]}}$r.constructor_=function(){this._pt=new _,this._level=0,this._env=null;let t=arguments[0];this.computeKey(t)};class Qr extends Kr{constructor(){super(),Qr.constructor_.apply(this,arguments)}static createNode(t){var e=new $r(t);return new Qr(e.getEnvelope(),e.getLevel())}static createExpanded(t,e){var r=new R(e);null!==t&&r.expandToInclude(t._env);var n=Qr.createNode(r);return null!==t&&n.insertNode(t),n}find(t){var e=Kr.getSubnodeIndex(t,this._centrex,this._centrey);return-1===e?this:null!==this._subnode[e]?this._subnode[e].find(t):this}isSearchMatch(t){return null!==t&&this._env.intersects(t)}getSubnode(t){return null===this._subnode[t]&&(this._subnode[t]=this.createSubnode(t)),this._subnode[t]}getEnvelope(){return this._env}getNode(t){var e=Kr.getSubnodeIndex(t,this._centrex,this._centrey);return-1!==e?this.getSubnode(e).getNode(t):this}createSubnode(t){var e=0,r=0,n=0,i=0;switch(t){case 0:e=this._env.getMinX(),r=this._centrex,n=this._env.getMinY(),i=this._centrey;break;case 1:e=this._centrex,r=this._env.getMaxX(),n=this._env.getMinY(),i=this._centrey;break;case 2:e=this._env.getMinX(),r=this._centrex,n=this._centrey,i=this._env.getMaxY();break;case 3:e=this._centrex,r=this._env.getMaxX(),n=this._centrey,i=this._env.getMaxY()}var o=new R(e,r,n,i);return new Qr(o,this._level-1)}insertNode(t){m.isTrue(null===this._env||this._env.contains(t._env));var e=Kr.getSubnodeIndex(t._env,this._centrex,this._centrey);if(t._level===this._level-1)this._subnode[e]=t;else{var r=this.createSubnode(e);r.insertNode(t),this._subnode[e]=r}}getClass(){return Qr}get interfaces_(){return[]}}Qr.constructor_=function(){this._env=null,this._centrex=null,this._centrey=null,this._level=null;let t=arguments[0],e=arguments[1];this._env=t,this._level=e,this._centrex=(t.getMinX()+t.getMaxX())/2,this._centrey=(t.getMinY()+t.getMaxY())/2};class tn{constructor(){tn.constructor_.apply(this,arguments)}static isZeroWidth(t,e){var r=e-t;if(0===r)return!0;var n=r/Math.max(Math.abs(t),Math.abs(e));return Jr.exponent(n)<=tn.MIN_BINARY_EXPONENT}getClass(){return tn}get interfaces_(){return[]}}tn.constructor_=function(){},tn.MIN_BINARY_EXPONENT=-50;class en extends Kr{constructor(){super(),en.constructor_.apply(this,arguments)}insert(t,e){var r=Kr.getSubnodeIndex(t,en.origin.x,en.origin.y);if(-1===r)return this.add(e),null;var n=this._subnode[r];if(null===n||!n.getEnvelope().contains(t)){var i=Qr.createExpanded(n,t);this._subnode[r]=i}this.insertContained(this._subnode[r],t,e)}isSearchMatch(t){return!0}insertContained(t,e,r){m.isTrue(t.getEnvelope().contains(e));var n=tn.isZeroWidth(e.getMinX(),e.getMaxX()),i=tn.isZeroWidth(e.getMinY(),e.getMaxY());(n||i?t.find(e):t.getNode(e)).add(r)}getClass(){return en}get interfaces_(){return[]}}en.constructor_=function(){},en.origin=new _(0,0);class rn{constructor(){rn.constructor_.apply(this,arguments)}insert(t,e){}remove(t,e){}query(){}getClass(){return rn}get interfaces_(){return[]}}rn.constructor_=function(){};class nn{constructor(){nn.constructor_.apply(this,arguments)}static ensureExtent(t,e){var r=t.getMinX(),n=t.getMaxX(),i=t.getMinY(),o=t.getMaxY();return r!==n&&i!==o?t:(r===n&&(n=(r-=e/2)+e/2),i===o&&(o=(i-=e/2)+e/2),new R(r,n,i,o))}size(){return null!==this._root?this._root.size():0}insert(t,e){this.collectStats(t);var r=nn.ensureExtent(t,this._minExtent);this._root.insert(r,e)}query(){if(1===arguments.length){let e=arguments[0];var t=new ke;return this.query(e,t),t.getItems()}if(2===arguments.length){let t=arguments[0],e=arguments[1];this._root.visit(t,e)}}queryAll(){var t=new C;return this._root.addAllItems(t),t}remove(t,e){var r=nn.ensureExtent(t,this._minExtent);return this._root.remove(r,e)}collectStats(t){var e=t.getWidth();e0&&(this._minExtent=e);var r=t.getHeight();r0&&(this._minExtent=r)}depth(){return null!==this._root?this._root.depth():0}isEmpty(){return null===this._root||this._root.isEmpty()}getClass(){return nn}get interfaces_(){return[rn,d]}}nn.constructor_=function(){this._root=null,this._minExtent=1,this._root=new en},nn.serialVersionUID=-0x678b60c967a25400;var on=Object.freeze({Quadtree:nn});class an{constructor(){an.constructor_.apply(this,arguments)}getBounds(){}getClass(){return an}get interfaces_(){return[]}}an.constructor_=function(){};class sn{constructor(){sn.constructor_.apply(this,arguments)}getItem(){return this._item}getBounds(){return this._bounds}getClass(){return sn}get interfaces_(){return[an,d]}}sn.constructor_=function(){this._bounds=null,this._item=null;let t=arguments[0],e=arguments[1];this._bounds=t,this._item=e};class ln{constructor(){ln.constructor_.apply(this,arguments)}poll(){if(this.isEmpty())return null;var t=this._items.get(1);return this._items.set(1,this._items.get(this._size)),this._size-=1,this.reorder(1),t}size(){return this._size}reorder(t){for(var e=null,r=this._items.get(t);2*t<=this._size&&((e=2*t)!==this._size&&this._items.get(e+1).compareTo(this._items.get(e))<0&&e++,this._items.get(e).compareTo(r)<0);t=e)this._items.set(t,this._items.get(e));this._items.set(t,r)}clear(){this._size=0,this._items.clear()}peek(){return this.isEmpty()?null:this._items.get(1)}isEmpty(){return 0===this._size}add(t){this._items.add(null),this._size+=1;var e=this._size;for(this._items.set(0,t);t.compareTo(this._items.get(Math.trunc(e/2)))<0;e/=2)this._items.set(e,this._items.get(Math.trunc(e/2)));this._items.set(e,t)}getClass(){return ln}get interfaces_(){return[]}}ln.constructor_=function(){this._size=null,this._items=null,this._size=0,this._items=new C,this._items.add(null)};class un{constructor(){un.constructor_.apply(this,arguments)}getLevel(){return this._level}size(){return this._childBoundables.size()}getChildBoundables(){return this._childBoundables}addChildBoundable(t){m.isTrue(null===this._bounds),this._childBoundables.add(t)}isEmpty(){return this._childBoundables.isEmpty()}getBounds(){return null===this._bounds&&(this._bounds=this.computeBounds()),this._bounds}getClass(){return un}get interfaces_(){return[an,d]}}un.constructor_=function(){if(this._childBoundables=new C,this._bounds=null,this._level=null,0===arguments.length);else if(1===arguments.length){let t=arguments[0];this._level=t}},un.serialVersionUID=0x5a1e55ec41369800;class cn{constructor(){cn.constructor_.apply(this,arguments)}static area(t){return t.getBounds().getArea()}static isComposite(t){return t instanceof un}expandToQueue(t,e){var n=cn.isComposite(this._boundable1),i=cn.isComposite(this._boundable2);if(n&&i)return cn.area(this._boundable1)>cn.area(this._boundable2)?(this.expand(this._boundable1,this._boundable2,t,e),null):(this.expand(this._boundable2,this._boundable1,t,e),null);if(n)return this.expand(this._boundable1,this._boundable2,t,e),null;if(i)return this.expand(this._boundable2,this._boundable1,t,e),null;throw new r("neither boundable is composite")}isLeaves(){return!(cn.isComposite(this._boundable1)||cn.isComposite(this._boundable2))}compareTo(t){var e=t;return this._distancee._distance?1:0}expand(t,e,r,n){for(var i=t.getChildBoundables().iterator();i.hasNext();){var o=i.next(),a=new cn(o,e,this._itemDistance);a.getDistance()e?1:t-2),n.getLevel()===t)return i.add(n),null;for(var e=n.getChildBoundables().iterator();e.hasNext();){var r=e.next();r instanceof un?this.boundablesAtLevel(t,r,i):(m.isTrue(r instanceof sn),-1===t&&i.add(r))}return null}}query(){if(1===arguments.length){let e=arguments[0];this.build();var t=new C;return this.isEmpty()||this.getIntersectsOp().intersects(this._root.getBounds(),e)&&this.queryInternal(e,this._root,t),t}if(2===arguments.length){let t=arguments[0],e=arguments[1];if(this.build(),this.isEmpty())return null;this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.queryInternal(t,this._root,e)}}build(){if(this._built)return null;this._root=this._itemBoundables.isEmpty()?this.createNode(0):this.createHigherLevels(this._itemBoundables,-1),this._itemBoundables=null,this._built=!0}getRoot(){return this.build(),this._root}remove(){if(2===arguments.length){let t=arguments[0],e=arguments[1];return this.build(),!!this.getIntersectsOp().intersects(this._root.getBounds(),t)&&this.remove(t,this._root,e)}if(3===arguments.length){let i=arguments[0],o=arguments[1],a=arguments[2];var t=this.removeItem(o,a);if(t)return!0;for(var e=null,r=o.getChildBoundables().iterator();r.hasNext();){var n=r.next();if(this.getIntersectsOp().intersects(n.getBounds(),i)&&n instanceof un&&(t=this.remove(i,n,a))){e=n;break}}return null!==e&&e.getChildBoundables().isEmpty()&&o.getChildBoundables().remove(e),t}}createHigherLevels(t,e){m.isTrue(!t.isEmpty());var r=this.createParentBoundables(t,e+1);return 1===r.size()?r.get(0):this.createHigherLevels(r,e+1)}depth(){if(0===arguments.length)return this.isEmpty()?0:(this.build(),this.depth(this._root));if(1===arguments.length){for(var t=0,e=arguments[0].getChildBoundables().iterator();e.hasNext();){var r=e.next();if(r instanceof un){var n=this.depth(r);n>t&&(t=n)}}return t+1}}createParentBoundables(t,e){m.isTrue(!t.isEmpty());var r=new C;r.add(this.createNode(e));var n=new C(t);Le.sort(n,this.getComparator());for(var i=n.iterator();i.hasNext();){var o=i.next();this.lastNode(r).getChildBoundables().size()===this.getNodeCapacity()&&r.add(this.createNode(e)),this.lastNode(r).addChildBoundable(o)}return r}isEmpty(){return this._built?this._root.isEmpty():this._itemBoundables.isEmpty()}getClass(){return hn}get interfaces_(){return[d]}}hn.IntersectsOp=function(){},hn.constructor_=function(){if(this._root=null,this._built=!1,this._itemBoundables=new C,this._nodeCapacity=null,0===arguments.length)hn.constructor_.call(this,hn.DEFAULT_NODE_CAPACITY);else if(1===arguments.length){let t=arguments[0];m.isTrue(t>1,"Node capacity must be greater than 1"),this._nodeCapacity=t}},hn.serialVersionUID=-0x35ef64c82d4c5400,hn.DEFAULT_NODE_CAPACITY=10;class fn{constructor(){fn.constructor_.apply(this,arguments)}distance(t,e){}getClass(){return fn}get interfaces_(){return[]}}fn.constructor_=function(){};class pn extends hn{constructor(){super(),pn.constructor_.apply(this,arguments)}static centreX(t){return pn.avg(t.getMinX(),t.getMaxX())}static avg(t,e){return(t+e)/2}static getItems(t){for(var e=new Array(t.size()).fill(null),r=0;!t.isEmpty();){var n=t.poll();e[r]=n.getBoundable(0).getItem(),r++}return e}static centreY(t){return pn.avg(t.getMinY(),t.getMaxY())}createParentBoundablesFromVerticalSlices(t,e){m.isTrue(t.length>0);for(var r=new C,n=0;n0&&!((l=(s=o.poll()).getDistance())>=e);)s.isLeaves()?(e=l,r=s):s.expandToQueue(o,e);return[r.getBoundable(0).getItem(),r.getBoundable(1).getItem()]}if(arguments[0]instanceof cn&&Number.isInteger(arguments[1])){let t=arguments[0],e=arguments[1];return this.nearestNeighbour(t,i.POSITIVE_INFINITY,e)}}else if(3===arguments.length){if(b(arguments[2],fn)&&arguments[0]instanceof R&&arguments[1]instanceof Object){let e=arguments[2];var n=new sn(arguments[0],arguments[1]);return t=new cn(this.getRoot(),n,e),this.nearestNeighbour(t)[0]}if(Number.isInteger(arguments[2])&&arguments[0]instanceof cn&&"number"==typeof arguments[1]){let t=arguments[0],r=arguments[2];var o;e=arguments[1],(o=new ln).add(t);for(var a=new ln;!o.isEmpty()&&e>=0;){var s,l;if((l=(s=o.poll()).getDistance())>=e)break;s.isLeaves()?a.size()l&&(a.poll(),a.add(s)),e=a.peek().getDistance()):s.expandToQueue(o,e)}return pn.getItems(a)}}else if(4===arguments.length){let e=arguments[2],r=arguments[3];return n=new sn(arguments[0],arguments[1]),t=new cn(this.getRoot(),n,e),this.nearestNeighbour(t,r)}}getClass(){return pn}get interfaces_(){return[rn,d]}}class dn extends un{constructor(){super(),dn.constructor_.apply(this,arguments)}computeBounds(){for(var t=null,e=this.getChildBoundables().iterator();e.hasNext();){var r=e.next();null===t?t=new R(r.getBounds()):t.expandToInclude(r.getBounds())}return t}getClass(){return dn}get interfaces_(){return[]}}dn.constructor_=function(){let t=arguments[0];un.constructor_.call(this,t)},pn.STRtreeNode=dn,pn.constructor_=function(){if(0===arguments.length)pn.constructor_.call(this,pn.DEFAULT_NODE_CAPACITY);else if(1===arguments.length){let t=arguments[0];hn.constructor_.call(this,t)}},pn.serialVersionUID=0x39920f7d5f261e0,pn.xComparator=new class{get interfaces_(){return[p]}compare(t,e){return hn.compareDoubles(pn.centreX(t.getBounds()),pn.centreX(e.getBounds()))}},pn.yComparator=new class{get interfaces_(){return[p]}compare(t,e){return hn.compareDoubles(pn.centreY(t.getBounds()),pn.centreY(e.getBounds()))}},pn.intersectsOp=new class{get interfaces_(){return[IntersectsOp]}intersects(t,e){return t.intersects(e)}},pn.DEFAULT_NODE_CAPACITY=10;var gn=Object.freeze({STRtree:pn}),yn=Object.freeze({kdtree:Zr,quadtree:on,strtree:gn});const mn=["Point","MultiPoint","LineString","MultiLineString","Polygon","MultiPolygon"];class _n{constructor(t){this.geometryFactory=t||new ae}read(t){let e;const r=(e="string"==typeof t?JSON.parse(t):t).type;if(!vn[r])throw new Error("Unknown GeoJSON type: "+e.type);return-1!==mn.indexOf(r)?vn[r].call(this,e.coordinates):"GeometryCollection"===r?vn[r].call(this,e.geometries):vn[r].call(this,e)}write(t){const e=t.getGeometryType();if(!bn[e])throw new Error("Geometry is not supported");return bn[e].call(this,t)}}const vn={Feature:function(t){const e={};for(let r in t)e[r]=t[r];if(t.geometry){const r=t.geometry.type;if(!vn[r])throw new Error("Unknown GeoJSON type: "+t.type);e.geometry=this.read(t.geometry)}return t.bbox&&(e.bbox=vn.bbox.call(this,t.bbox)),e},FeatureCollection:function(t){const e={};if(t.features){e.features=[];for(let r=0;re?1:0}static compare(t,e,r){if(e.equals2D(r))return 0;var n=En.relativeSign(e.x,r.x),i=En.relativeSign(e.y,r.y);switch(t){case 0:return En.compareValue(n,i);case 1:return En.compareValue(i,n);case 2:return En.compareValue(i,-n);case 3:return En.compareValue(-n,i);case 4:return En.compareValue(-n,-i);case 5:return En.compareValue(-i,-n);case 6:return En.compareValue(-i,n);case 7:return En.compareValue(n,-i)}return m.shouldNeverReachHere("invalid octant value"),0}static compareValue(t,e){return t<0?-1:t>0?1:e<0?-1:e>0?1:0}getClass(){return En}get interfaces_(){return[]}}En.constructor_=function(){};class On{constructor(){On.constructor_.apply(this,arguments)}getCoordinate(){return this.coord}print(t){t.print(this.coord),t.print(" seg # = "+this.segmentIndex)}compareTo(t){var e=t;return this.segmentIndexe.segmentIndex?1:this.coord.equals2D(e.coord)?0:En.compare(this._segmentOctant,this.coord,e.coord)}isEndPoint(t){return 0===this.segmentIndex&&!this._isInterior||this.segmentIndex===t}isInterior(){return this._isInterior}getClass(){return On}get interfaces_(){return[h]}}On.constructor_=function(){this._segString=null,this.coord=null,this.segmentIndex=null,this._segmentOctant=null,this._isInterior=null;let t=arguments[0],e=arguments[1],r=arguments[2],n=arguments[3];this._segString=t,this.coord=new _(e),this.segmentIndex=r,this._segmentOctant=n,this._isInterior=!e.equals2D(t.getCoordinate(r))};class Sn{constructor(){Sn.constructor_.apply(this,arguments)}getSplitCoordinates(){var t=new P;this.addEndpoints();for(var e=this.iterator(),r=e.next();e.hasNext();){var n=e.next();this.addEdgeCoordinates(r,n,t),r=n}return t.toCoordinateArray()}addCollapsedNodes(){var t=new C;this.findCollapsesFromInsertedNodes(t),this.findCollapsesFromExistingVertices(t);for(var e=t.iterator();e.hasNext();){var r=e.next().intValue();this.add(this._edge.getCoordinate(r),r)}}print(t){t.println("Intersections:");for(var e=this.iterator();e.hasNext();)e.next().print(t)}findCollapsesFromExistingVertices(t){for(var e=0;e=0?i>=0?t>=e?0:1:t>=e?7:6:i>=0?t>=e?3:2:t>=e?4:5}if(arguments[0]instanceof _&&arguments[1]instanceof _){let t=arguments[0],e=arguments[1];var n=e.x-t.x,i=e.y-t.y;if(0===n&&0===i)throw new r("Cannot compute the octant for two identical points "+t);return In.octant(n,i)}}getClass(){return In}get interfaces_(){return[]}}In.constructor_=function(){};class Cn{constructor(){Cn.constructor_.apply(this,arguments)}getCoordinates(){}size(){}getCoordinate(t){}isClosed(){}setData(t){}getData(){}getClass(){return Cn}get interfaces_(){return[]}}Cn.constructor_=function(){};class Tn{constructor(){Tn.constructor_.apply(this,arguments)}addIntersection(t,e){}getClass(){return Tn}get interfaces_(){return[Cn]}}Tn.constructor_=function(){};class Pn{constructor(){Pn.constructor_.apply(this,arguments)}static getNodedSubstrings(){if(1===arguments.length){let e=arguments[0];var t=new C;return Pn.getNodedSubstrings(e,t),t}if(2===arguments.length){let t=arguments[1];for(var e=arguments[0].iterator();e.hasNext();)e.next().getNodeList().addSplitEdges(t)}}getCoordinates(){return this._pts}size(){return this._pts.length}getCoordinate(t){return this._pts[t]}isClosed(){return this._pts[0].equals(this._pts[this._pts.length-1])}getSegmentOctant(t){return t===this._pts.length-1?-1:this.safeOctant(this.getCoordinate(t),this.getCoordinate(t+1))}setData(t){this._data=t}safeOctant(t,e){return t.equals2D(e)?0:In.octant(t,e)}getData(){return this._data}addIntersection(){if(2===arguments.length){let t=arguments[0],e=arguments[1];this.addIntersectionNode(t,e)}else if(4===arguments.length){let e=arguments[1],r=arguments[3];var t=new _(arguments[0].getIntersection(r));this.addIntersection(t,e)}}toString(){return he.toLineString(new Kt(this._pts))}getNodeList(){return this._nodeList}addIntersectionNode(t,e){var r=e,n=r+1;if(n=t.length-1)return t.length-1;for(var n=fr.quadrant(t[r],t[r+1]),i=e+1;ir.getId()&&(r.computeOverlaps(i,t),this._nOverlaps++),this._segInt.isDone())return null}}getClass(){return kn}get interfaces_(){return[]}}class jn extends Rn{constructor(){super(),jn.constructor_.apply(this,arguments)}overlap(){if(4!==arguments.length)return super.overlap.apply(this,arguments);{let r=arguments[1],n=arguments[2],i=arguments[3];var t=arguments[0].getContext(),e=n.getContext();this._si.processIntersections(t,r,e,i)}}getClass(){return jn}get interfaces_(){return[]}}jn.constructor_=function(){this._si=null;let t=arguments[0];this._si=t},kn.SegmentOverlapAction=jn,kn.constructor_=function(){if(this._monoChains=new C,this._index=new pn,this._idCounter=0,this._nodedSegStrings=null,this._nOverlaps=0,0===arguments.length);else if(1===arguments.length){let t=arguments[0];An.constructor_.call(this,t)}};class Fn{constructor(){Fn.constructor_.apply(this,arguments)}rescale(){if(b(arguments[0],w))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.rescale(e.getCoordinates())}else if(arguments[0]instanceof Array){let e=arguments[0];for(2===e.length&&(new _(e[0]),new _(e[1])),t=0;t0&&this._minIndexthis._minCoord.y&&r.y>this._minCoord.y&&n===D.CLOCKWISE)&&(i=!0),i&&(this._minIndex=this._minIndex-1)}getRightmostSideOfSegment(t,e){var r=t.getEdge().getCoordinates();if(e<0||e+1>=r.length)return-1;if(r[e].y===r[e+1].y)return-1;var n=xr.LEFT;return r[e].ythis._minCoord.x)&&(this._minDe=t,this._minIndex=r,this._minCoord=e[r])}findRightmostEdgeAtNode(){var t=this._minDe.getNode().getEdges();this._minDe=t.getRightmostEdge(),this._minDe.isForward()||(this._minDe=this._minDe.getSym(),this._minIndex=this._minDe.getEdge().getCoordinates().length-1)}findEdge(t){for(var e=t.iterator();e.hasNext();){var r=e.next();r.isForward()&&this.checkForRightmostCoordinate(r)}m.isTrue(0!==this._minIndex||this._minCoord.equals(this._minDe.getCoordinate()),"inconsistency in rightmost processing"),0===this._minIndex?this.findRightmostEdgeAtNode():this.findRightmostEdgeAtVertex(),this._orientedDe=this._minDe,this.getRightmostSide(this._minDe,this._minIndex)===xr.LEFT&&(this._orientedDe=this._minDe.getSym())}getClass(){return zn}get interfaces_(){return[]}}function Vn(){this.array_=[]}zn.constructor_=function(){this._minIndex=-1,this._minCoord=null,this._minDe=null,this._orientedDe=null},Vn.prototype.addLast=function(t){this.array_.push(t)},Vn.prototype.removeFirst=function(){return this.array_.shift()},Vn.prototype.isEmpty=function(){return 0===this.array_.length};class qn{constructor(){qn.constructor_.apply(this,arguments)}clearVisitedEdges(){for(var t=this._dirEdgeList.iterator();t.hasNext();)t.next().setVisited(!1)}getRightmostCoordinate(){return this._rightMostCoord}computeNodeDepth(t){for(var e=null,r=t.getEdges().iterator();r.hasNext();)if((n=r.next()).isVisited()||n.getSym().isVisited()){e=n;break}if(null===e)throw new Gr("unable to find edge to compute depths at "+t.getCoordinate());for(t.getEdges().computeDepths(e),r=t.getEdges().iterator();r.hasNext();){var n;(n=r.next()).setVisited(!0),this.copySymDepths(n)}}computeDepth(t){this.clearVisitedEdges();var e=this._finder.getEdge();e.getNode(),e.getLabel(),e.setEdgeDepths(xr.RIGHT,t),this.copySymDepths(e),this.computeDepths(e)}create(t){this.addReachable(t),this._finder.findEdge(this._dirEdgeList),this._rightMostCoord=this._finder.getCoordinate()}findResultEdges(){for(var t=this._dirEdgeList.iterator();t.hasNext();){var e=t.next();e.getDepth(xr.RIGHT)>=1&&e.getDepth(xr.LEFT)<=0&&!e.isInteriorAreaEdge()&&e.setInResult(!0)}}computeDepths(t){var e=new ot,r=new Vn,n=t.getNode();for(r.addLast(n),e.add(n),t.setVisited(!0);!r.isEmpty();){var i=r.removeFirst();e.add(i),this.computeNodeDepth(i);for(var o=i.getEdges().iterator();o.hasNext();){var a=o.next().getSym();if(!a.isVisited()){var s=a.getNode();e.contains(s)||(r.addLast(s),e.add(s))}}}}compareTo(t){var e=t;return this._rightMostCoord.xe._rightMostCoord.x?1:0}getEnvelope(){if(null===this._env){for(var t=new R,e=this._dirEdgeList.iterator();e.hasNext();)for(var r=e.next().getEdge().getCoordinates(),n=0;nthis._maxNodeDegree&&(this._maxNodeDegree=e),t=this.getNext(t)}while(t!==this._startDe);this._maxNodeDegree*=2}addPoints(t,e,r){var n=t.getCoordinates();if(e){var i=1;r&&(i=0);for(var o=i;o=0;o--)this._pts.add(n[o])}isHole(){return this._isHole}setInResult(){var t=this._startDe;do{t.getEdge().setInResult(!0),t=t.getNext()}while(t!==this._startDe)}containsPoint(t){var e=this.getLinearRing();if(!e.getEnvelopeInternal().contains(t))return!1;if(!Ue.isInRing(t,e.getCoordinates()))return!1;for(var r=this._holes.iterator();r.hasNext();)if(r.next().containsPoint(t))return!1;return!0}addHole(t){this._holes.add(t)}isShell(){return null===this._shell}getLabel(){return this._label}getEdges(){return this._edges}getMaxNodeDegree(){return this._maxNodeDegree<0&&this.computeMaxNodeDegree(),this._maxNodeDegree}getShell(){return this._shell}mergeLabel(){if(1===arguments.length){let t=arguments[0];this.mergeLabel(t,0),this.mergeLabel(t,1)}else if(2===arguments.length){let e=arguments[1];var t=arguments[0].getLocation(e,xr.RIGHT);if(t===ge.NONE)return null;if(this._label.getLocation(e)===ge.NONE)return this._label.setLocation(e,t),null}}setShell(t){this._shell=t,null!==t&&t.addHole(this)}toPolygon(t){for(var e=new Array(this._holes.size()).fill(null),r=0;r2){o.linkDirectedEdgesForMinimalEdgeRings();var a=o.buildMinimalRings(),s=this.findShell(a);null!==s?(this.placePolygonHoles(s,a),e.add(s)):r.addAll(a)}else n.add(o)}return n}containsPoint(t){for(var e=this._shellList.iterator();e.hasNext();)if(e.next().containsPoint(t))return!0;return!1}buildMaximalEdgeRings(t){for(var e=new C,r=t.iterator();r.hasNext();){var n=r.next();if(n.isInResult()&&n.getLabel().isArea()&&null===n.getEdgeRing()){var i=new Xn(n,this._geometryFactory);e.add(i),i.setInResult()}}return e}placePolygonHoles(t,e){for(var r=e.iterator();r.hasNext();){var n=r.next();n.isHole()&&n.setShell(t)}}getPolygons(){return this.computePolygons(this._shellList)}findEdgeRingContaining(t,e){for(var r=t.getLinearRing(),n=r.getEnvelopeInternal(),i=r.getCoordinateN(0),o=null,a=null,s=e.iterator();s.hasNext();){var l=s.next(),u=l.getLinearRing(),c=u.getEnvelopeInternal();null!==o&&(a=o.getLinearRing().getEnvelopeInternal());var h=!1;c.contains(n)&&Ue.isInRing(i,u.getCoordinates())&&(h=!0),h&&(null===o||a.contains(c))&&(o=l)}return o}findShell(t){for(var e=0,r=null,n=t.iterator();n.hasNext();){var i=n.next();i.isHole()||(r=i,e++)}return m.isTrue(e<=1,"found two shells in MinimalEdgeRing list"),r}add(){if(1===arguments.length){let t=arguments[0];this.add(t.getEdgeEnds(),t.getNodes())}else if(2===arguments.length){let n=arguments[0],i=arguments[1];zr.linkResultDirectedEdges(i);var t=this.buildMaximalEdgeRings(n),e=new C,r=this.buildMinimalEdgeRings(t,this._shellList,e);this.sortShellsAndHoles(r,this._shellList,e),this.placeFreeHoles(this._shellList,e)}}getClass(){return Hn}get interfaces_(){return[]}}Hn.constructor_=function(){this._geometryFactory=null,this._shellList=new C;let t=arguments[0];this._geometryFactory=t};class Zn{constructor(){Zn.constructor_.apply(this,arguments)}static simplify(t,e){return new Zn(t).simplify(e)}isDeletable(t,e,r,n){var i=this._inputLine[t],o=this._inputLine[e],a=this._inputLine[r];return!!this.isConcave(i,o,a)&&!!this.isShallow(i,o,a,n)&&this.isShallowSampled(i,o,t,r,n)}deleteShallowConcavities(){for(var t=1,e=(this._inputLine.length,this.findNextNonDeletedIndex(t)),r=this.findNextNonDeletedIndex(e),n=!1;r=0;r--)this.addPt(t[r])}isRedundant(t){if(this._ptList.size()<1)return!1;var e=this._ptList.get(this._ptList.size()-1);return t.distance(e)=2&&this._ptList.get(this._ptList.size()-2),t.equals(e))return null;this._ptList.add(t)}setMinimumVertexDistance(t){this._minimimVertexDistance=t}getClass(){return Kn}get interfaces_(){return[]}}Kn.constructor_=function(){this._ptList=null,this._precisionModel=null,this._minimimVertexDistance=0,this._ptList=new C},Kn.COORDINATE_ARRAY_TYPE=new Array(0).fill(null);class Jn{constructor(){Jn.constructor_.apply(this,arguments)}addNextSegment(t,e){if(this._s0=this._s1,this._s1=this._s2,this._s2=t,this._seg0.setCoordinates(this._s0,this._s1),this.computeOffsetSegment(this._seg0,this._side,this._distance,this._offset0),this._seg1.setCoordinates(this._s1,this._s2),this.computeOffsetSegment(this._seg1,this._side,this._distance,this._offset1),this._s1.equals(this._s2))return null;var r=D.index(this._s0,this._s1,this._s2),n=r===D.CLOCKWISE&&this._side===xr.LEFT||r===D.COUNTERCLOCKWISE&&this._side===xr.RIGHT;0===r?this.addCollinear(e):n?this.addOutsideTurn(r,e):this.addInsideTurn(r,e)}addLineEndCap(t,e){var r=new de(t,e),n=new de;this.computeOffsetSegment(r,xr.LEFT,this._distance,n);var i=new de;this.computeOffsetSegment(r,xr.RIGHT,this._distance,i);var o=e.x-t.x,a=e.y-t.y,s=Math.atan2(a,o);switch(this._bufParams.getEndCapStyle()){case Bn.CAP_ROUND:this._segList.addPt(n.p1),this.addDirectedFillet(e,s+Math.PI/2,s-Math.PI/2,D.CLOCKWISE,this._distance),this._segList.addPt(i.p1);break;case Bn.CAP_FLAT:this._segList.addPt(n.p1),this._segList.addPt(i.p1);break;case Bn.CAP_SQUARE:var l=new _;l.x=Math.abs(this._distance)*Math.cos(s),l.y=Math.abs(this._distance)*Math.sin(s);var u=new _(n.p1.x+l.x,n.p1.y+l.y),c=new _(i.p1.x+l.x,i.p1.y+l.y);this._segList.addPt(u),this._segList.addPt(c)}}getCoordinates(){return this._segList.getCoordinates()}addMitreJoin(t,e,r,n){var i=!0,o=null;try{o=U.intersection(e.p0,e.p1,r.p0,r.p1),(n<=0?1:o.distance(t)/Math.abs(n))>this._bufParams.getMitreLimit()&&(i=!1)}catch(t){if(!(t instanceof M))throw t;o=new _(0,0),i=!1}i?this._segList.addPt(o):this.addLimitedMitreJoin(e,r,n,this._bufParams.getMitreLimit())}addOutsideTurn(t,e){if(this._offset0.p1.distance(this._offset1.p0)=c&&(s-=2*Math.PI),this._segList.addPt(e),this.addDirectedFillet(t,s,c,n,i),this._segList.addPt(r)}addLastSegment(){this._segList.addPt(this._offset1.p1)}initSideSegments(t,e,r){this._s1=t,this._s2=e,this._side=r,this._seg1.setCoordinates(t,e),this.computeOffsetSegment(this._seg1,r,this._distance,this._offset1)}addLimitedMitreJoin(t,e,r,n){var i=this._seg0.p1,o=me.angle(i,this._seg0.p0),a=(me.angle(i,this._seg1.p1),me.angleBetweenOriented(this._seg0.p0,i,this._seg1.p1)/2),s=me.normalize(o+a),l=me.normalize(s+Math.PI),u=n*r,c=r-u*Math.abs(Math.sin(a)),h=i.x+u*Math.cos(l),f=i.y+u*Math.sin(l),p=new _(h,f),d=new de(i,p),g=d.pointAlongOffset(1,c),y=d.pointAlongOffset(1,-c);this._side===xr.LEFT?(this._segList.addPt(g),this._segList.addPt(y)):(this._segList.addPt(y),this._segList.addPt(g))}addDirectedFillet(t,e,r,n,i){var o,a=n===D.CLOCKWISE?-1:1,s=Math.abs(e-r),l=Math.trunc(s/this._filletAngleQuantum+.5);if(l<1)return null;o=s/l;for(var u=0,c=new _;u0){var r=new _((this._closingSegLengthFactor*this._offset0.p1.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset0.p1.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(r);var n=new _((this._closingSegLengthFactor*this._offset1.p0.x+this._s1.x)/(this._closingSegLengthFactor+1),(this._closingSegLengthFactor*this._offset1.p0.y+this._s1.y)/(this._closingSegLengthFactor+1));this._segList.addPt(n)}else this._segList.addPt(this._s1);this._segList.addPt(this._offset1.p0)}}createCircle(t){var e=new _(t.x+this._distance,t.y);this._segList.addPt(e),this.addDirectedFillet(t,0,2*Math.PI,-1,this._distance),this._segList.closeRing()}addBevelJoin(t,e){this._segList.addPt(t.p1),this._segList.addPt(e.p0)}init(t){this._distance=t,this._maxCurveSegmentError=t*(1-Math.cos(this._filletAngleQuantum/2)),this._segList=new Kn,this._segList.setPrecisionModel(this._precisionModel),this._segList.setMinimumVertexDistance(t*Jn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)}addCollinear(t){this._li.computeIntersection(this._s0,this._s1,this._s1,this._s2),this._li.getIntersectionNum()>=2&&(this._bufParams.getJoinStyle()===Bn.JOIN_BEVEL||this._bufParams.getJoinStyle()===Bn.JOIN_MITRE?(t&&this._segList.addPt(this._offset0.p1),this._segList.addPt(this._offset1.p0)):this.addCornerFillet(this._s1,this._offset0.p1,this._offset1.p0,D.CLOCKWISE,this._distance))}closeRing(){this._segList.closeRing()}hasNarrowConcaveAngle(){return this._hasNarrowConcaveAngle}getClass(){return Jn}get interfaces_(){return[]}}Jn.constructor_=function(){this._maxCurveSegmentError=0,this._filletAngleQuantum=null,this._closingSegLengthFactor=1,this._segList=null,this._distance=0,this._precisionModel=null,this._bufParams=null,this._li=null,this._s0=null,this._s1=null,this._s2=null,this._seg0=new de,this._seg1=new de,this._offset0=new de,this._offset1=new de,this._side=0,this._hasNarrowConcaveAngle=!1;let t=arguments[0],e=arguments[1],r=arguments[2];this._precisionModel=t,this._bufParams=e,this._li=new pe,this._filletAngleQuantum=Math.PI/2/e.getQuadrantSegments(),e.getQuadrantSegments()>=8&&e.getJoinStyle()===Bn.JOIN_ROUND&&(this._closingSegLengthFactor=Jn.MAX_CLOSING_SEG_LEN_FACTOR),this.init(r)},Jn.OFFSET_SEGMENT_SEPARATION_FACTOR=.001,Jn.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR=.001,Jn.CURVE_VERTEX_SNAP_DISTANCE_FACTOR=1e-6,Jn.MAX_CLOSING_SEG_LEN_FACTOR=80;class $n{constructor(){$n.constructor_.apply(this,arguments)}static copyCoordinates(t){for(var e=new Array(t.length).fill(null),r=0;r=0;a--)r.addNextSegment(i[a],!0)}else{r.addSegments(t,!1);var s=Zn.simplify(t,n),l=s.length-1;for(r.initSideSegments(s[0],s[1],xr.LEFT),r.addFirstSegment(),a=2;a<=l;a++)r.addNextSegment(s[a],!0)}r.addLastSegment(),r.closeRing()}computeRingBufferCurve(t,e,r){var n=this.simplifyTolerance(this._distance);e===xr.RIGHT&&(n=-n);var i=Zn.simplify(t,n),o=i.length-1;r.initSideSegments(i[o-1],i[0],e);for(var a=1;a<=o;a++){var s=1!==a;r.addNextSegment(i[a],s)}r.closeRing()}computeLineBufferCurve(t,e){var r=this.simplifyTolerance(this._distance),n=Zn.simplify(t,r),i=n.length-1;e.initSideSegments(n[0],n[1],xr.LEFT);for(var o=2;o<=i;o++)e.addNextSegment(n[o],!0);e.addLastSegment(),e.addLineEndCap(n[i-1],n[i]);var a=Zn.simplify(t,-r),s=a.length-1;for(e.initSideSegments(a[s],a[s-1],xr.LEFT),o=s-2;o>=0;o--)e.addNextSegment(a[o],!0);e.addLastSegment(),e.addLineEndCap(a[1],a[0]),e.closeRing()}computePointCurve(t,e){switch(this._bufParams.getEndCapStyle()){case Bn.CAP_ROUND:e.createCircle(t);break;case Bn.CAP_SQUARE:e.createSquare(t)}}getLineCurve(t,e){if(this._distance=e,e<0&&!this._bufParams.isSingleSided())return null;if(0===e)return null;var r=Math.abs(e),n=this.getSegGen(r);if(t.length<=1)this.computePointCurve(t[0],n);else if(this._bufParams.isSingleSided()){var i=e<0;this.computeSingleSidedBufferCurve(t,i,n)}else this.computeLineBufferCurve(t,n);return n.getCoordinates()}getBufferParameters(){return this._bufParams}simplifyTolerance(t){return t*this._bufParams.getSimplifyFactor()}getRingCurve(t,e,r){if(this._distance=r,t.length<=2)return this.getLineCurve(t,r);if(0===r)return $n.copyCoordinates(t);var n=this.getSegGen(r);return this.computeRingBufferCurve(t,e,n),n.getCoordinates()}computeOffsetCurve(t,e,r){var n=this.simplifyTolerance(this._distance);if(e){var i=Zn.simplify(t,-n),o=i.length-1;r.initSideSegments(i[o],i[o-1],xr.LEFT),r.addFirstSegment();for(var a=o-2;a>=0;a--)r.addNextSegment(i[a],!0)}else{var s=Zn.simplify(t,n),l=s.length-1;for(r.initSideSegments(s[0],s[1],xr.LEFT),r.addFirstSegment(),a=2;a<=l;a++)r.addNextSegment(s[a],!0)}r.addLastSegment()}getSegGen(t){return new Jn(this._precisionModel,this._bufParams,t)}getClass(){return $n}get interfaces_(){return[]}}$n.constructor_=function(){this._distance=0,this._precisionModel=null,this._bufParams=null;let t=arguments[0],e=arguments[1];this._precisionModel=t,this._bufParams=e};class Qn{constructor(){Qn.constructor_.apply(this,arguments)}findStabbedSegments(){if(1===arguments.length){let i=arguments[0];for(var t=new C,e=this._subgraphs.iterator();e.hasNext();){var r=e.next(),n=r.getEnvelope();i.yn.getMaxY()||this.findStabbedSegments(i,r.getDirectedEdges(),t)}return t}if(3===arguments.length)if(b(arguments[2],O)&&arguments[0]instanceof _&&arguments[1]instanceof Ur){let t=arguments[0],r=arguments[1],n=arguments[2];var i=r.getEdge().getCoordinates();for(e=0;ethis._seg.p1.y&&this._seg.reverse(),!(Math.max(this._seg.p0.x,this._seg.p1.x)this._seg.p1.y||D.index(this._seg.p0,this._seg.p1,t)===D.RIGHT)){var o=r.getDepth(xr.LEFT);this._seg.p0.equals(i[e])||(o=r.getDepth(xr.RIGHT));var a=new ti(this._seg,o);n.add(a)}}else if(b(arguments[2],O)&&arguments[0]instanceof _&&b(arguments[1],O)){let t=arguments[0],r=arguments[2];for(e=arguments[1].iterator();e.hasNext();){var s=e.next();s.isForward()&&this.findStabbedSegments(t,s,r)}}}getDepth(t){var e=this.findStabbedSegments(t);return 0===e.size()?0:Le.min(e)._leftDepth}getClass(){return Qn}get interfaces_(){return[]}}class ti{constructor(){ti.constructor_.apply(this,arguments)}compareTo(t){var e=t;if(this._upwardSeg.minX()>=e._upwardSeg.maxX())return 1;if(this._upwardSeg.maxX()<=e._upwardSeg.minX())return-1;var r=this._upwardSeg.orientationIndex(e._upwardSeg);return 0!==r||0!=(r=-1*e._upwardSeg.orientationIndex(this._upwardSeg))?r:this._upwardSeg.compareTo(e._upwardSeg)}compareX(t,e){var r=t.p0.compareTo(e.p0);return 0!==r?r:t.p1.compareTo(e.p1)}toString(){return this._upwardSeg.toString()}getClass(){return ti}get interfaces_(){return[h]}}ti.constructor_=function(){this._upwardSeg=null,this._leftDepth=null;let t=arguments[0],e=arguments[1];this._upwardSeg=new de(t),this._leftDepth=e},Qn.DepthSegment=ti,Qn.constructor_=function(){this._subgraphs=null,this._seg=new de;let t=arguments[0];this._subgraphs=t};class ei{constructor(){ei.constructor_.apply(this,arguments)}addPoint(t){if(this._distance<=0)return null;var e=t.getCoordinates(),r=this._curveBuilder.getLineCurve(e,this._distance);this.addCurve(r,ge.EXTERIOR,ge.INTERIOR)}addPolygon(t){var e=this._distance,r=xr.LEFT;this._distance<0&&(e=-this._distance,r=xr.RIGHT);var n=t.getExteriorRing(),i=Q.removeRepeatedPoints(n.getCoordinates());if(this._distance<0&&this.isErodedCompletely(n,this._distance))return null;if(this._distance<=0&&i.length<3)return null;this.addPolygonRing(i,e,r,ge.EXTERIOR,ge.INTERIOR);for(var o=0;o0&&this.isErodedCompletely(a,-this._distance)||this.addPolygonRing(s,e,xr.opposite(r),ge.INTERIOR,ge.EXTERIOR)}}isTriangleErodedCompletely(t,e){var r=new _e(t[0],t[1],t[2]),n=r.inCentre();return z.pointToSegment(n,r.p0,r.p1)=Vt.MINIMUM_VALID_SIZE&&D.isCCW(t)&&(o=i,a=n,r=xr.opposite(r));var s=this._curveBuilder.getRingCurve(t,r,e);this.addCurve(s,o,a)}add(t){if(t.isEmpty())return null;if(t instanceof Bt)this.addPolygon(t);else if(t instanceof jt)this.addLineString(t);else if(t instanceof Dt)this.addPoint(t);else if(t instanceof zt)this.addCollection(t);else if(t instanceof Ot)this.addCollection(t);else if(t instanceof qt)this.addCollection(t);else{if(!(t instanceof Et))throw new UnsupportedOperationException(t.getClass().getName());this.addCollection(t)}}isErodedCompletely(t,e){var r=t.getCoordinates();if(r.length<4)return e<0;if(4===r.length)return this.isTriangleErodedCompletely(r,e);var n=t.getEnvelopeInternal(),i=Math.min(n.getHeight(),n.getWidth());return e<0&&2*Math.abs(e)>i}addCollection(t){for(var e=0;e=0;r--){var n=this._edgeList.get(r),i=n.getSym();null===e&&(e=i),null!==t&&i.setNext(t),t=n}e.setNext(t)}computeDepths(){if(1===arguments.length){let i=arguments[0];var t=this.findIndex(i),e=(i.getLabel(),i.getDepth(xr.LEFT)),r=i.getDepth(xr.RIGHT),n=this.computeDepths(t+1,this._edgeList.size(),e);if(this.computeDepths(0,t,n)!==r)throw new Gr("depth mismatch at "+i.getCoordinate())}else if(3===arguments.length){let t=arguments[1];for(var i=arguments[2],o=arguments[0];o=0;i--){var o=this._resultAreaEdgeList.get(i),a=o.getSym();switch(null===e&&o.getEdgeRing()===t&&(e=o),n){case this._SCANNING_FOR_INCOMING:if(a.getEdgeRing()!==t)continue;r=a,n=this._LINKING_TO_OUTGOING;break;case this._LINKING_TO_OUTGOING:if(o.getEdgeRing()!==t)continue;r.setNextMin(o),n=this._SCANNING_FOR_INCOMING}}n===this._LINKING_TO_OUTGOING&&(m.isTrue(null!==e,"found null for first outgoing dirEdge"),m.isTrue(e.getEdgeRing()===t,"unable to link last incoming dirEdge"),r.setNextMin(e))}getOutgoingDegree(){if(0===arguments.length){for(var t=0,e=this.iterator();e.hasNext();)e.next().isInResult()&&t++;return t}if(1===arguments.length){let r=arguments[0];for(t=0,e=this.iterator();e.hasNext();)e.next().getEdgeRing()===r&&t++;return t}}getLabel(){return this._label}findCoveredLineEdges(){for(var t=ge.NONE,e=this.iterator();e.hasNext();){var r=(i=e.next()).getSym();if(!i.isLineEdge()){if(i.isInResult()){t=ge.INTERIOR;break}if(r.isInResult()){t=ge.EXTERIOR;break}}}if(t===ge.NONE)return null;var n=t;for(e=this.iterator();e.hasNext();){var i;r=(i=e.next()).getSym(),i.isLineEdge()?i.getEdge().setCovered(n===ge.INTERIOR):(i.isInResult()&&(n=ge.EXTERIOR),r.isInResult()&&(n=ge.INTERIOR))}}computeLabelling(t){super.computeLabelling.call(this,t),this._label=new Tr(ge.NONE);for(var e=this.iterator();e.hasNext();)for(var r=e.next().getEdge().getLabel(),n=0;n<2;n++){var i=r.getLocation(n);i!==ge.INTERIOR&&i!==ge.BOUNDARY||this._label.setLocation(n,ge.INTERIOR)}}getClass(){return ni}get interfaces_(){return[]}}ni.constructor_=function(){this._resultAreaEdgeList=null,this._label=null,this._SCANNING_FOR_INCOMING=1,this._LINKING_TO_OUTGOING=2};class ii extends Br{constructor(){super(),ii.constructor_.apply(this,arguments)}createNode(t){return new jr(t,new ni)}getClass(){return ii}get interfaces_(){return[]}}ii.constructor_=function(){};class oi{constructor(){oi.constructor_.apply(this,arguments)}static orientation(t){return 1===Q.increasingDirection(t)}static compareOriented(t,e,r,n){for(var i=e?1:-1,o=n?1:-1,a=e?t.length:-1,s=n?r.length:-1,l=e?0:t.length-1,u=n?0:r.length-1;;){var c=t[l].compareTo(r[u]);if(0!==c)return c;var h=(l+=i)===a,f=(u+=o)===s;if(h&&!f)return-1;if(!h&&f)return 1;if(h&&f)return 0}}compareTo(t){var e=t;return oi.compareOriented(this._pts,this._orientation,e._pts,e._orientation)}getClass(){return oi}get interfaces_(){return[h]}}oi.constructor_=function(){this._pts=null,this._orientation=null;let t=arguments[0];this._pts=t,this._orientation=oi.orientation(t)};class ai{constructor(){ai.constructor_.apply(this,arguments)}print(t){t.print("MULTILINESTRING ( ");for(var e=0;e0&&t.print(","),t.print("(");for(var n=r.getCoordinates(),i=0;i0&&t.print(","),t.print(n[i].x+" "+n[i].y);t.println(")")}t.print(") ")}addAll(t){for(var e=t.iterator();e.hasNext();)this.add(e.next())}findEdgeIndex(t){for(var e=0;en||this._maxyo;if(a)return!1;var s=this.intersectsToleranceSquare(t,e);return m.isTrue(!(a&&s),"Found bad envelope test"),s}initCorners(t){this._minx=t.x-.5,this._maxx=t.x+.5,this._miny=t.y-.5,this._maxy=t.y+.5,this._corner[0]=new _(this._maxx,this._maxy),this._corner[1]=new _(this._minx,this._maxy),this._corner[2]=new _(this._minx,this._miny),this._corner[3]=new _(this._maxx,this._miny)}intersects(t,e){return 1===this._scaleFactor?this.intersectsScaled(t,e):(this.copyScaled(t,this._p0Scaled),this.copyScaled(e,this._p1Scaled),this.intersectsScaled(this._p0Scaled,this._p1Scaled))}scale(t){return Math.round(t*this._scaleFactor)}getCoordinate(){return this._originalPt}copyScaled(t,e){e.x=this.scale(t.x),e.y=this.scale(t.y)}getSafeEnvelope(){if(null===this._safeEnv){var t=hi.SAFE_ENV_EXPANSION_FACTOR/this._scaleFactor;this._safeEnv=new R(this._originalPt.x-t,this._originalPt.x+t,this._originalPt.y-t,this._originalPt.y+t)}return this._safeEnv}intersectsPixelClosure(t,e){return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!(this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),this._li.hasIntersection()||(this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),this._li.hasIntersection()))))}intersectsToleranceSquare(t,e){var r=!1,n=!1;return this._li.computeIntersection(t,e,this._corner[0],this._corner[1]),!!(this._li.isProper()||(this._li.computeIntersection(t,e,this._corner[1],this._corner[2]),this._li.isProper()||(this._li.hasIntersection()&&(r=!0),this._li.computeIntersection(t,e,this._corner[2],this._corner[3]),this._li.isProper()||(this._li.hasIntersection()&&(n=!0),this._li.computeIntersection(t,e,this._corner[3],this._corner[0]),this._li.isProper()||r&&n||t.equals(this._pt)||e.equals(this._pt)))))}addSnappedNode(t,e){var r=t.getCoordinate(e),n=t.getCoordinate(e+1);return!!this.intersects(r,n)&&(t.addIntersection(this.getCoordinate(),e),!0)}getClass(){return hi}get interfaces_(){return[]}}hi.constructor_=function(){this._li=null,this._pt=null,this._originalPt=null,this._ptScaled=null,this._p0Scaled=null,this._p1Scaled=null,this._scaleFactor=null,this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,this._corner=new Array(4).fill(null),this._safeEnv=null;let t=arguments[0],e=arguments[1],n=arguments[2];if(this._originalPt=t,this._pt=t,this._scaleFactor=e,this._li=n,e<=0)throw new r("Scale factor must be non-zero");1!==e&&(this._pt=new _(this.scale(t.x),this.scale(t.y)),this._p0Scaled=new _,this._p1Scaled=new _),this.initCorners(this._pt)},hi.SAFE_ENV_EXPANSION_FACTOR=.75;class fi{constructor(){fi.constructor_.apply(this,arguments)}select(){if(1===arguments.length);else if(2===arguments.length){let t=arguments[1];arguments[0].getLineSegment(t,this.selectedSegment),this.select(this.selectedSegment)}}getClass(){return fi}get interfaces_(){return[]}}fi.constructor_=function(){this.selectedSegment=new de};class pi{constructor(){pi.constructor_.apply(this,arguments)}snap(){if(1===arguments.length){let t=arguments[0];return this.snap(t,null,-1)}if(3===arguments.length){let r=arguments[0],n=arguments[1],i=arguments[2];var t=r.getSafeEnvelope(),e=new di(r,n,i);return this._index.query(t,new class{get interfaces_(){return[Ie]}visitItem(r){r.select(t,e)}}),e.isNodeAdded()}}getClass(){return pi}get interfaces_(){return[]}}class di extends fi{constructor(){super(),di.constructor_.apply(this,arguments)}isNodeAdded(){return this._isNodeAdded}select(){if(!(2===arguments.length&&Number.isInteger(arguments[1])&&arguments[0]instanceof Ln))return super.select.apply(this,arguments);{let e=arguments[1];var t=arguments[0].getContext();if(null!==this._parentEdge&&t===this._parentEdge&&e===this._hotPixelVertexIndex)return null;this._isNodeAdded=this._hotPixel.addSnappedNode(t,e)}}getClass(){return di}get interfaces_(){return[]}}di.constructor_=function(){this._hotPixel=null,this._parentEdge=null,this._hotPixelVertexIndex=null,this._isNodeAdded=!1;let t=arguments[0],e=arguments[1],r=arguments[2];this._hotPixel=t,this._parentEdge=e,this._hotPixelVertexIndex=r},pi.HotPixelSnapAction=di,pi.constructor_=function(){this._index=null;let t=arguments[0];this._index=t};class gi{constructor(){gi.constructor_.apply(this,arguments)}processIntersections(t,e,r,n){if(t===r&&e===n)return null;var i=t.getCoordinates()[e],o=t.getCoordinates()[e+1],a=r.getCoordinates()[n],s=r.getCoordinates()[n+1];if(this._li.computeIntersection(i,o,a,s),this._li.hasIntersection()&&this._li.isInteriorIntersection()){for(var l=0;l0?e:0),o=r-Math.trunc(Math.log(i)/Math.log(10)+1);return Math.pow(10,o)}bufferFixedPrecision(t){var e=new Fn(new yi(new ie(1)),t.getScale()),r=new ui(this._bufParams);r.setWorkingPrecisionModel(t),r.setNoder(e),this._resultGeometry=r.buffer(this._argGeom,this._distance)}bufferReducedPrecision(){if(0===arguments.length){for(var t=mi.MAX_PRECISION_DIGITS;t>=0;t--){try{this.bufferReducedPrecision(t)}catch(t){if(!(t instanceof Gr))throw t;this._saveException=t}if(null!==this._resultGeometry)return null}throw this._saveException}if(1===arguments.length){let t=arguments[0];var e=mi.precisionScaleFactor(this._argGeom,this._distance,t),r=new ie(e);this.bufferFixedPrecision(r)}}computeGeometry(){if(this.bufferOriginalPrecision(),null!==this._resultGeometry)return null;var t=this._argGeom.getFactory().getPrecisionModel();t.getType()===ie.FIXED?this.bufferFixedPrecision(t):this.bufferReducedPrecision()}setQuadrantSegments(t){this._bufParams.setQuadrantSegments(t)}bufferOriginalPrecision(){try{var t=new ui(this._bufParams);this._resultGeometry=t.buffer(this._argGeom,this._distance)}catch(t){if(!(t instanceof g))throw t;this._saveException=t}}getResultGeometry(t){return this._distance=t,this.computeGeometry(),this._resultGeometry}setEndCapStyle(t){this._bufParams.setEndCapStyle(t)}getClass(){return mi}get interfaces_(){return[]}}mi.constructor_=function(){if(this._argGeom=null,this._distance=null,this._bufParams=new Bn,this._resultGeometry=null,this._saveException=null,1===arguments.length){let t=arguments[0];this._argGeom=t}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this._argGeom=t,this._bufParams=e}},mi.CAP_ROUND=Bn.CAP_ROUND,mi.CAP_BUTT=Bn.CAP_FLAT,mi.CAP_FLAT=Bn.CAP_FLAT,mi.CAP_SQUARE=Bn.CAP_SQUARE,mi.MAX_PRECISION_DIGITS=12;var _i=Object.freeze({BufferOp:mi,BufferParameters:Bn});class vi{constructor(){vi.constructor_.apply(this,arguments)}static getPolygons(){if(1===arguments.length){let t=arguments[0];return vi.getPolygons(t,new C)}if(2===arguments.length){let t=arguments[0],e=arguments[1];return t instanceof Bt?e.add(t):t instanceof Et&&t.apply(new vi(e)),e}}filter(t){t instanceof Bt&&this._comps.add(t)}getClass(){return vi}get interfaces_(){return[xt]}}vi.constructor_=function(){this._comps=null;let t=arguments[0];this._comps=t};class bi{constructor(){bi.constructor_.apply(this,arguments)}isInsideArea(){return this._segIndex===bi.INSIDE_AREA}getCoordinate(){return this._pt}getGeometryComponent(){return this._component}getSegmentIndex(){return this._segIndex}getClass(){return bi}get interfaces_(){return[]}}bi.constructor_=function(){if(this._component=null,this._segIndex=null,this._pt=null,2===arguments.length){let t=arguments[0],e=arguments[1];bi.constructor_.call(this,t,bi.INSIDE_AREA,e)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];this._component=t,this._segIndex=e,this._pt=r}},bi.INSIDE_AREA=-1;class xi{constructor(){xi.constructor_.apply(this,arguments)}static getPoints(){if(1===arguments.length){let t=arguments[0];return t instanceof Dt?Le.singletonList(t):xi.getPoints(t,new C)}if(2===arguments.length){let t=arguments[0],e=arguments[1];return t instanceof Dt?e.add(t):t instanceof Et&&t.apply(new xi(e)),e}}filter(t){t instanceof Dt&&this._pts.add(t)}getClass(){return xi}get interfaces_(){return[xt]}}xi.constructor_=function(){this._pts=null;let t=arguments[0];this._pts=t};class wi{constructor(){wi.constructor_.apply(this,arguments)}static getLocations(t){var e=new C;return t.apply(new wi(e)),e}filter(t){(t instanceof Dt||t instanceof jt||t instanceof Bt)&&this._locations.add(new bi(t,0,t.getCoordinate()))}getClass(){return wi}get interfaces_(){return[xt]}}wi.constructor_=function(){this._locations=null;let t=arguments[0];this._locations=t};class Ei{constructor(){Ei.constructor_.apply(this,arguments)}static distance(t,e){return new Ei(t,e).distance()}static isWithinDistance(t,e,r){return!(t.getEnvelopeInternal().distance(e.getEnvelopeInternal())>r)&&new Ei(t,e,r).distance()<=r}static nearestPoints(t,e){return new Ei(t,e).nearestPoints()}computeContainmentDistance(){if(0===arguments.length){var t=new Array(2).fill(null);if(this.computeContainmentDistance(0,t),this._minDistance<=this._terminateDistance)return null;this.computeContainmentDistance(1,t)}else if(2===arguments.length){let t=arguments[0],o=arguments[1];var e=this._geom[t];if(e.getDimension()<2)return null;var r=1-t,n=vi.getPolygons(e);if(n.size()>0){var i=wi.getLocations(this._geom[r]);if(this.computeContainmentDistance(i,n,o),this._minDistance<=this._terminateDistance)return this._minDistanceLocation[r]=o[0],this._minDistanceLocation[t]=o[1],null}}else if(3===arguments.length)if(arguments[2]instanceof Array&&b(arguments[0],O)&&b(arguments[1],O)){let t=arguments[0],e=arguments[1],r=arguments[2];for(var o=0;othis._minDistance)return null;for(var t=i.getCoordinates(),e=o.getCoordinate(),r=0;rthis._minDistance)return null;t=e.getCoordinates();var i=n.getCoordinates();for(r=0;rt&&Q.reverse(this._coordinates)}return this._coordinates}toLineString(){return this._factory.createLineString(this.getCoordinates())}add(t){this._directedEdges.add(t)}getClass(){return Si}get interfaces_(){return[]}}Si.constructor_=function(){this._factory=null,this._directedEdges=new C,this._coordinates=null;let t=arguments[0];this._factory=t};class Ii{constructor(){Ii.constructor_.apply(this,arguments)}static getComponentWithVisitedState(t,e){for(;t.hasNext();){var r=t.next();if(r.isVisited()===e)return r}return null}static setVisited(t,e){for(;t.hasNext();)t.next().setVisited(e)}static setMarked(t,e){for(;t.hasNext();)t.next().setMarked(e)}setVisited(t){this._isVisited=t}isMarked(){return this._isMarked}setData(t){this._data=t}getData(){return this._data}setMarked(t){this._isMarked=t}getContext(){return this._data}isVisited(){return this._isVisited}setContext(t){this._data=t}getClass(){return Ii}get interfaces_(){return[]}}Ii.constructor_=function(){this._isMarked=!1,this._isVisited=!1,this._data=null};class Ci extends Ii{constructor(){super(),Ci.constructor_.apply(this,arguments)}static toEdges(t){for(var e=new C,r=t.iterator();r.hasNext();)e.add(r.next()._parentEdge);return e}isRemoved(){return null===this._parentEdge}compareDirection(t){return this._quadrant>t._quadrant?1:this._quadrant=t.size()-2}hasIntersection(){return null!==this._interiorIntersection}isDone(){return!this._findAllIntersections&&null!==this._interiorIntersection}getClass(){return Gi}get interfaces_(){return[si]}}Gi.constructor_=function(){this._findAllIntersections=!1,this._isCheckEndSegmentsOnly=!1,this._li=null,this._interiorIntersection=null,this._intSegments=null,this._intersections=new C,this._intersectionCount=0,this._keepIntersections=!0;let t=arguments[0];this._li=t,this._interiorIntersection=null};class Ui{constructor(){Ui.constructor_.apply(this,arguments)}static computeIntersections(t){var e=new Ui(t);return e.setFindAllIntersections(!0),e.isValid(),e.getIntersections()}execute(){if(null!==this._segInt)return null;this.checkInteriorIntersections()}getIntersections(){return this._segInt.getIntersections()}isValid(){return this.execute(),this._isValid}setFindAllIntersections(t){this._findAllIntersections=t}checkInteriorIntersections(){this._isValid=!0,this._segInt=new Gi(this._li),this._segInt.setFindAllIntersections(this._findAllIntersections);var t=new kn;if(t.setSegmentIntersector(this._segInt),t.computeNodes(this._segStrings),this._segInt.hasIntersection())return this._isValid=!1,null}checkValid(){if(this.execute(),!this._isValid)throw new Gr(this.getErrorMessage(),this._segInt.getInteriorIntersection())}getErrorMessage(){if(this._isValid)return"no intersections found";var t=this._segInt.getIntersectionSegments();return"found non-noded intersection between "+he.toLineString(t[0],t[1])+" and "+he.toLineString(t[2],t[3])}getClass(){return Ui}get interfaces_(){return[]}}Ui.constructor_=function(){this._li=new pe,this._segStrings=null,this._findAllIntersections=!1,this._segInt=null,this._isValid=!0;let t=arguments[0];this._segStrings=t};class Bi{constructor(){Bi.constructor_.apply(this,arguments)}static toSegmentStrings(t){for(var e=new C,r=t.iterator();r.hasNext();){var n=r.next();e.add(new Di(n.getCoordinates(),n))}return e}static checkValid(t){new Bi(t).checkValid()}checkValid(){this._nv.checkValid()}getClass(){return Bi}get interfaces_(){return[]}}Bi.constructor_=function(){this._nv=null;let t=arguments[0];this._nv=new Ui(Bi.toSegmentStrings(t))};class zi{constructor(){zi.constructor_.apply(this,arguments)}static map(t,e){return new zi(e).map(t)}map(t){for(var e=new C,r=0;r=0&&t.add(o+1,new _(i),!1)}}findSegmentIndexToSnap(t,e){for(var r=i.MAX_VALUE,n=-1,o=0;ot&&(t=r)}return t}if(2===arguments.length){let t=arguments[0],e=arguments[1];return Math.min(Wi.computeOverlaySnapTolerance(t),Wi.computeOverlaySnapTolerance(e))}}static computeSizeBasedSnapTolerance(t){var e=t.getEnvelopeInternal();return Math.min(e.getHeight(),e.getWidth())*Wi.SNAP_PRECISION_FACTOR}static snapToSelf(t,e,r){return new Wi(t).snapToSelf(e,r)}snapTo(t,e){var r=this.extractTargetCoordinates(t);return new Xi(e,r).transform(this._srcGeom)}snapToSelf(t,e){var r=this.extractTargetCoordinates(this._srcGeom),n=new Xi(t,r,!0).transform(this._srcGeom),i=n;return e&&b(i,Ut)&&(i=n.buffer(0)),i}computeSnapTolerance(t){return this.computeMinimumSegmentLength(t)/10}extractTargetCoordinates(t){for(var e=new yt,r=t.getCoordinates(),n=0;n>>20}static zeroLowerBits(t,e){var r="low";if(e>32&&(t.low=0,e%=32,r="high"),e>0){var n=e<32?~((1<=0;n--){if(Hi.getBit(t,n)!==Hi.getBit(e,n))return r;r++}return 52}}class Zi{constructor(){Zi.constructor_.apply(this,arguments)}addCommonBits(t){var e=new Ji(this._commonCoord);t.apply(e),t.geometryChanged()}removeCommonBits(t){if(0===this._commonCoord.x&&0===this._commonCoord.y)return t;var e=new _(this._commonCoord);e.x=-e.x,e.y=-e.y;var r=new Ji(e);return t.apply(r),t.geometryChanged(),t}getCommonCoordinate(){return this._commonCoord}add(t){t.apply(this._ccFilter),this._commonCoord=this._ccFilter.getCommonCoordinate()}getClass(){return Zi}get interfaces_(){return[]}}class Ki{constructor(){Ki.constructor_.apply(this,arguments)}filter(t){this._commonBitsX.add(t.x),this._commonBitsY.add(t.y)}getCommonCoordinate(){return new _(this._commonBitsX.getCommon(),this._commonBitsY.getCommon())}getClass(){return Ki}get interfaces_(){return[X]}}Ki.constructor_=function(){this._commonBitsX=new Hi,this._commonBitsY=new Hi};class Ji{constructor(){Ji.constructor_.apply(this,arguments)}filter(t,e){var r=t.getOrdinate(e,0)+this.trans.x,n=t.getOrdinate(e,1)+this.trans.y;t.setOrdinate(e,0,r),t.setOrdinate(e,1,n)}isDone(){return!1}isGeometryChanged(){return!0}getClass(){return Ji}get interfaces_(){return[wt]}}Ji.constructor_=function(){this.trans=null;let t=arguments[0];this.trans=t},Zi.CommonCoordinateFilter=Ki,Zi.Translater=Ji,Zi.constructor_=function(){this._commonCoord=null,this._ccFilter=new Ki};class $i{constructor(){$i.constructor_.apply(this,arguments)}static overlayOp(t,e,r){return new $i(t,e).getResultGeometry(r)}static union(t,e){return $i.overlayOp(t,e,eo.UNION)}static intersection(t,e){return $i.overlayOp(t,e,eo.INTERSECTION)}static symDifference(t,e){return $i.overlayOp(t,e,eo.SYMDIFFERENCE)}static difference(t,e){return $i.overlayOp(t,e,eo.DIFFERENCE)}selfSnap(t){return new Wi(t).snapTo(t,this._snapTolerance)}removeCommonBits(t){this._cbr=new Zi,this._cbr.add(t[0]),this._cbr.add(t[1]);var e=new Array(2).fill(null);return e[0]=this._cbr.removeCommonBits(t[0].copy()),e[1]=this._cbr.removeCommonBits(t[1].copy()),e}prepareResult(t){return this._cbr.addCommonBits(t),t}getResultGeometry(t){var e=this.snap(this._geom),r=eo.overlayOp(e[0],e[1],t);return this.prepareResult(r)}checkValid(t){t.isValid()||G.out.println("Snapped geometry is invalid")}computeSnapTolerance(){this._snapTolerance=Wi.computeOverlaySnapTolerance(this._geom[0],this._geom[1])}snap(t){var e=this.removeCommonBits(t);return Wi.snap(e[0],e[1],this._snapTolerance)}getClass(){return $i}get interfaces_(){return[]}}$i.constructor_=function(){this._geom=new Array(2).fill(null),this._snapTolerance=null,this._cbr=null;let t=arguments[0],e=arguments[1];this._geom[0]=t,this._geom[1]=e,this.computeSnapTolerance()};class Qi{constructor(){Qi.constructor_.apply(this,arguments)}static overlayOp(t,e,r){return new Qi(t,e).getResultGeometry(r)}static union(t,e){return Qi.overlayOp(t,e,eo.UNION)}static intersection(t,e){return Qi.overlayOp(t,e,eo.INTERSECTION)}static symDifference(t,e){return Qi.overlayOp(t,e,eo.SYMDIFFERENCE)}static difference(t,e){return Qi.overlayOp(t,e,eo.DIFFERENCE)}getResultGeometry(t){var e=null,r=!1,n=null;try{e=eo.overlayOp(this._geom[0],this._geom[1],t),r=!0}catch(t){if(!(t instanceof g))throw t;n=t}if(!r)try{e=$i.overlayOp(this._geom[0],this._geom[1],t)}catch(t){throw t instanceof g?n:t}return e}getClass(){return Qi}get interfaces_(){return[]}}Qi.constructor_=function(){this._geom=new Array(2).fill(null);let t=arguments[0],e=arguments[1];this._geom[0]=t,this._geom[1]=e};class to{constructor(){to.constructor_.apply(this,arguments)}getArgGeometry(t){return this._arg[t].getGeometry()}setComputationPrecision(t){this._resultPrecisionModel=t,this._li.setPrecisionModel(this._resultPrecisionModel)}getClass(){return to}get interfaces_(){return[]}}to.constructor_=function(){if(this._li=new pe,this._resultPrecisionModel=null,this._arg=null,1===arguments.length){let t=arguments[0];this.setComputationPrecision(t.getPrecisionModel()),this._arg=new Array(1).fill(null),this._arg[0]=new Vr(0,t)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];to.constructor_.call(this,t,e,H.OGC_SFS_BOUNDARY_RULE)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];t.getPrecisionModel().compareTo(e.getPrecisionModel())>=0?this.setComputationPrecision(t.getPrecisionModel()):this.setComputationPrecision(e.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new Vr(0,t,r),this._arg[1]=new Vr(1,e,r)}};class eo extends to{constructor(){super(),eo.constructor_.apply(this,arguments)}static overlayOp(t,e,r){return new eo(t,e).getResultGeometry(r)}static union(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return eo.createEmptyResult(eo.UNION,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}if(t.isGeometryCollection()||e.isGeometryCollection())throw new r("This method does not support GeometryCollection arguments");return Qi.overlayOp(t,e,eo.UNION)}static intersection(t,e){if(t.isEmpty()||e.isEmpty())return eo.createEmptyResult(eo.INTERSECTION,t,e,t.getFactory());if(t.isGeometryCollection()){var n=e;return zi.map(t,new class{get interfaces_(){return[MapOp]}map(t){return t.intersection(n)}})}if(t.isGeometryCollection()||e.isGeometryCollection())throw new r("This method does not support GeometryCollection arguments");return Qi.overlayOp(t,e,eo.INTERSECTION)}static symDifference(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return eo.createEmptyResult(eo.SYMDIFFERENCE,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}if(t.isGeometryCollection()||e.isGeometryCollection())throw new r("This method does not support GeometryCollection arguments");return Qi.overlayOp(t,e,eo.SYMDIFFERENCE)}static resultDimension(t,e,r){var n=e.getDimension(),i=r.getDimension(),o=-1;switch(t){case eo.INTERSECTION:o=Math.min(n,i);break;case eo.UNION:o=Math.max(n,i);break;case eo.DIFFERENCE:o=n;break;case eo.SYMDIFFERENCE:o=Math.max(n,i)}return o}static createEmptyResult(t,e,r,n){var i=null;switch(eo.resultDimension(t,e,r)){case-1:i=n.createGeometryCollection();break;case 0:i=n.createPoint();break;case 1:i=n.createLineString();break;case 2:i=n.createPolygon()}return i}static difference(t,e){if(t.isEmpty())return eo.createEmptyResult(eo.DIFFERENCE,t,e,t.getFactory());if(e.isEmpty())return t.copy();if(t.isGeometryCollection()||e.isGeometryCollection())throw new r("This method does not support GeometryCollection arguments");return Qi.overlayOp(t,e,eo.DIFFERENCE)}static isResultOfOp(){if(2===arguments.length){let r=arguments[0],n=arguments[1];var t=r.getLocation(0),e=r.getLocation(1);return eo.isResultOfOp(t,e,n)}if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];switch(t===ge.BOUNDARY&&(t=ge.INTERIOR),e===ge.BOUNDARY&&(e=ge.INTERIOR),r){case eo.INTERSECTION:return t===ge.INTERIOR&&e===ge.INTERIOR;case eo.UNION:return t===ge.INTERIOR||e===ge.INTERIOR;case eo.DIFFERENCE:return t===ge.INTERIOR&&e!==ge.INTERIOR;case eo.SYMDIFFERENCE:return t===ge.INTERIOR&&e!==ge.INTERIOR||t!==ge.INTERIOR&&e===ge.INTERIOR}return!1}}insertUniqueEdge(t){var e=this._edgeList.findEqualEdge(t);if(null!==e){var r=e.getLabel(),n=t.getLabel();e.isPointwiseEqual(t)||(n=new Tr(t.getLabel())).flip();var i=e.getDepth();i.isNull()&&i.add(r),i.add(n),r.merge(n)}else this._edgeList.add(t)}getGraph(){return this._graph}cancelDuplicateResultEdges(){for(var t=this._graph.getEdgeEnds().iterator();t.hasNext();){var e=t.next(),r=e.getSym();e.isInResult()&&r.isInResult()&&(e.setInResult(!1),r.setInResult(!1))}}isCoveredByLA(t){return!!this.isCovered(t,this._resultLineList)||!!this.isCovered(t,this._resultPolyList)}computeGeometry(t,e,r,n){var i=new C;return i.addAll(t),i.addAll(e),i.addAll(r),i.isEmpty()?eo.createEmptyResult(n,this._arg[0].getGeometry(),this._arg[1].getGeometry(),this._geomFact):this._geomFact.buildGeometry(i)}mergeSymLabels(){for(var t=this._graph.getNodes().iterator();t.hasNext();)t.next().getEdges().mergeSymLabels()}isCovered(t,e){for(var r=e.iterator();r.hasNext();){var n=r.next();if(this._ptLocator.locate(t,n)!==ge.EXTERIOR)return!0}return!1}replaceCollapsedEdges(){for(var t=new C,e=this._edgeList.iterator();e.hasNext();){var r=e.next();r.isCollapsed()&&(e.remove(),t.add(r.getCollapsedEdge()))}this._edgeList.addAll(t)}updateNodeLabelling(){for(var t=this._graph.getNodes().iterator();t.hasNext();){var e=t.next(),r=e.getEdges().getLabel();e.getLabel().merge(r)}}getResultGeometry(t){return this.computeOverlay(t),this._resultGeom}insertUniqueEdges(t){for(var e=t.iterator();e.hasNext();){var r=e.next();this.insertUniqueEdge(r)}}computeOverlay(t){this.copyPoints(0),this.copyPoints(1),this._arg[0].computeSelfNodes(this._li,!1),this._arg[1].computeSelfNodes(this._li,!1),this._arg[0].computeEdgeIntersections(this._arg[1],this._li,!0);var e=new C;this._arg[0].computeSplitEdges(e),this._arg[1].computeSplitEdges(e),this.insertUniqueEdges(e),this.computeLabelsFromDepths(),this.replaceCollapsedEdges(),Bi.checkValid(this._edgeList.getEdges()),this._graph.addEdges(this._edgeList.getEdges()),this.computeLabelling(),this.labelIncompleteNodes(),this.findResultAreaEdges(t),this.cancelDuplicateResultEdges();var r=new Hn(this._geomFact);r.add(this._graph),this._resultPolyList=r.getPolygons();var n=new Vi(this,this._geomFact,this._ptLocator);this._resultLineList=n.build(t);var i=new qi(this,this._geomFact,this._ptLocator);this._resultPointList=i.build(t),this._resultGeom=this.computeGeometry(this._resultPointList,this._resultLineList,this._resultPolyList,t)}labelIncompleteNode(t,e){var r=this._ptLocator.locate(t.getCoordinate(),this._arg[e].getGeometry());t.getLabel().setLocation(e,r)}copyPoints(t){for(var e=this._arg[t].getNodeIterator();e.hasNext();){var r=e.next();this._graph.addNode(r.getCoordinate()).setLabel(t,r.getLabel().getLocation(t))}}findResultAreaEdges(t){for(var e=this._graph.getEdgeEnds().iterator();e.hasNext();){var r=e.next(),n=r.getLabel();n.isArea()&&!r.isInteriorAreaEdge()&&eo.isResultOfOp(n.getLocation(0,xr.RIGHT),n.getLocation(1,xr.RIGHT),t)&&r.setInResult(!0)}}computeLabelsFromDepths(){for(var t=this._edgeList.iterator();t.hasNext();){var e=t.next(),r=e.getLabel(),n=e.getDepth();if(!n.isNull()){n.normalize();for(var i=0;i<2;i++)r.isNull(i)||!r.isArea()||n.isNull(i)||(0===n.getDelta(i)?r.toLine(i):(m.isTrue(!n.isNull(i,xr.LEFT),"depth of LEFT side has not been initialized"),r.setLocation(i,xr.LEFT,n.getLocation(i,xr.LEFT)),m.isTrue(!n.isNull(i,xr.RIGHT),"depth of RIGHT side has not been initialized"),r.setLocation(i,xr.RIGHT,n.getLocation(i,xr.RIGHT))))}}}computeLabelling(){for(var t=this._graph.getNodes().iterator();t.hasNext();)t.next().getEdges().computeLabelling(this._arg);this.mergeSymLabels(),this.updateNodeLabelling()}labelIncompleteNodes(){for(var t=this._graph.getNodes().iterator();t.hasNext();){var e=t.next(),r=e.getLabel();e.isIsolated()&&(r.isNull(0)?this.labelIncompleteNode(e,0):this.labelIncompleteNode(e,1)),e.getEdges().updateLabelling(r)}}isCoveredByA(t){return!!this.isCovered(t,this._resultPolyList)}getClass(){return eo}get interfaces_(){return[]}}eo.constructor_=function(){this._ptLocator=new br,this._geomFact=null,this._resultGeom=null,this._graph=null,this._edgeList=new ai,this._resultPolyList=new C,this._resultLineList=new C,this._resultPointList=new C;let t=arguments[0],e=arguments[1];to.constructor_.call(this,t,e),this._graph=new zr(new ii),this._geomFact=t.getFactory()},eo.INTERSECTION=1,eo.UNION=2,eo.DIFFERENCE=3,eo.SYMDIFFERENCE=4;var ro=Object.freeze({OverlayOp:eo});class no extends Ci{constructor(){super(),no.constructor_.apply(this,arguments)}getNext(){return this._next}isInRing(){return null!==this._edgeRing}setRing(t){this._edgeRing=t}setLabel(t){this._label=t}getLabel(){return this._label}setNext(t){this._next=t}getRing(){return this._edgeRing}getClass(){return no}get interfaces_(){return[]}}no.constructor_=function(){this._edgeRing=null,this._next=null,this._label=-1;let t=arguments[0],e=arguments[1],r=arguments[2],n=arguments[3];Ci.constructor_.call(this,t,e,r,n)};class io extends Pi{constructor(){super(),io.constructor_.apply(this,arguments)}getLine(){return this._line}getClass(){return io}get interfaces_(){return[]}}io.constructor_=function(){this._line=null;let t=arguments[0];this._line=t};class oo{constructor(){oo.constructor_.apply(this,arguments)}static findDirEdgesInRing(t){var e=t,r=new C;do{r.add(e),e=e.getNext(),m.isTrue(null!==e,"found null DE in ring"),m.isTrue(e===t||!e.isInRing(),"found DE already in ring")}while(e!==t);return r}static addEdge(t,e,r){if(e)for(var n=0;n=0;n--)r.add(t[n],!1)}static findEdgeRingContaining(t,e){for(var r=t.getRing(),n=r.getEnvelopeInternal(),i=r.getCoordinateN(0),o=null,a=null,s=e.iterator();s.hasNext();){var l=s.next(),u=l.getRing(),c=u.getEnvelopeInternal();if(!c.equals(n)&&c.contains(n)){i=Q.ptNotInList(r.getCoordinates(),u.getCoordinates());var h=!1;Ue.isInRing(i,u.getCoordinates())&&(h=!0),h&&(null===o||a.contains(c))&&(a=(o=l).getRing().getEnvelopeInternal())}}return o}isIncluded(){return this._isIncluded}getCoordinates(){if(null===this._ringPts){for(var t=new P,e=this._deList.iterator();e.hasNext();){var r=e.next(),n=r.getEdge();oo.addEdge(n.getLine().getCoordinates(),r.getEdgeDirection(),t)}this._ringPts=t.toCoordinateArray()}return this._ringPts}isIncludedSet(){return this._isIncludedSet}isValid(){return this.getCoordinates(),!(this._ringPts.length<=3)&&(this.getRing(),this._ring.isValid())}build(t){var e=t;do{this.add(e),e.setRing(this),e=e.getNext(),m.isTrue(null!==e,"found null DE in ring"),m.isTrue(e===t||!e.isInRing(),"found DE already in ring")}while(e!==t)}isOuterHole(){return!!this._isHole&&!this.hasShell()}getPolygon(){var t=null;if(null!==this._holes){t=new Array(this._holes.size()).fill(null);for(var e=0;e=0)){e.add(i);var o=oo.findDirEdgesInRing(i);so.label(o,r),r++}}return e}static getDegreeNonDeleted(t){for(var e=0,r=t.getOutEdges().getEdges().iterator();r.hasNext();)r.next().isMarked()||e++;return e}static deleteAllEdges(t){for(var e=t.getOutEdges().getEdges().iterator();e.hasNext();){var r=e.next();r.setMarked(!0);var n=r.getSym();null!==n&&n.setMarked(!0)}}static label(t,e){for(var r=t.iterator();r.hasNext();)r.next().setLabel(e)}static computeNextCWEdges(t){for(var e=null,r=null,n=t.getOutEdges().getEdges().iterator();n.hasNext();){var i=n.next();i.isMarked()||(null===e&&(e=i),null!==r&&r.getSym().setNext(i),r=i)}null!==r&&r.getSym().setNext(e)}static computeNextCCWEdges(t,e){for(var r=null,n=null,i=t.getOutEdges().getEdges(),o=i.size()-1;o>=0;o--){var a=i.get(o),s=a.getSym(),l=null;a.getLabel()===e&&(l=a);var u=null;s.getLabel()===e&&(u=s),null===l&&null===u||(null!==u&&(n=u),null!==l&&(null!==n&&(n.setNext(l),n=null),null===r&&(r=l)))}null!==n&&(m.isTrue(null!==r),n.setNext(r))}static getDegree(t,e){for(var r=0,n=t.getOutEdges().getEdges().iterator();n.hasNext();)n.next().getLabel()===e&&r++;return r}static findIntersectionNodes(t,e){var r=t,n=null;do{var i=r.getFromNode();so.getDegree(i,e)>1&&(null===n&&(n=new C),n.add(i)),r=r.getNext(),m.isTrue(null!==r,"found null DE in ring"),m.isTrue(r===t||!r.isInRing(),"found DE already in ring")}while(r!==t);return n}findEdgeRing(t){var e=new oo(this._factory);return e.build(t),e}computeDepthParity(){if(0===arguments.length)for(;;)return null}computeNextCWEdges(){for(var t=this.nodeIterator();t.hasNext();){var e=t.next();so.computeNextCWEdges(e)}}addEdge(t){if(t.isEmpty())return null;var e=Q.removeRepeatedPoints(t.getCoordinates());if(e.length<2)return null;var r=e[0],n=e[e.length-1],i=this.getNode(r),o=this.getNode(n),a=new no(i,o,e[1],!0),s=new no(o,i,e[e.length-2],!1),l=new io(t);l.setDirectedEdges(a,s),this.add(l)}deleteCutEdges(){this.computeNextCWEdges(),so.findLabeledEdgeRings(this._dirEdges);for(var t=new C,e=this._dirEdges.iterator();e.hasNext();){var r=e.next();if(!r.isMarked()){var n=r.getSym();if(r.getLabel()===n.getLabel()){r.setMarked(!0),n.setMarked(!0);var i=r.getEdge();t.add(i.getLine())}}}return t}getEdgeRings(){this.computeNextCWEdges(),so.label(this._dirEdges,-1);var t=so.findLabeledEdgeRings(this._dirEdges);this.convertMaximalToMinimalEdgeRings(t);for(var e=new C,r=this._dirEdges.iterator();r.hasNext();){var n=r.next();if(!n.isMarked()&&!n.isInRing()){var i=this.findEdgeRing(n);e.add(i)}}return e}getNode(t){var e=this.findNode(t);return null===e&&(e=new Li(t),this.add(e)),e}convertMaximalToMinimalEdgeRings(t){for(var e=t.iterator();e.hasNext();){var r=e.next(),n=r.getLabel(),i=so.findIntersectionNodes(r,n);if(null!==i)for(var o=i.iterator();o.hasNext();){var a=o.next();so.computeNextCCWEdges(a,n)}}}deleteDangles(){for(var t=this.findNodesOfDegree(1),e=new ot,r=new Je,n=t.iterator();n.hasNext();)r.push(n.next());for(;!r.isEmpty();){var i=r.pop();for(so.deleteAllEdges(i),n=i.getOutEdges().getEdges().iterator();n.hasNext();){var o=n.next();o.setMarked(!0);var a=o.getSym();null!==a&&a.setMarked(!0);var s=o.getEdge();e.add(s.getLine());var l=o.getToNode();1===so.getDegreeNonDeleted(l)&&r.push(l)}}return e}getClass(){return so}get interfaces_(){return[]}}so.constructor_=function(){this._factory=null;let t=arguments[0];this._factory=t};class lo{constructor(){lo.constructor_.apply(this,arguments)}static findOuterShells(t){for(var e=t.iterator();e.hasNext();){var r=e.next(),n=r.getOuterHole();null===n||n.isProcessed()||(r.setIncluded(!0),n.setProcessed(!0))}}static extractPolygons(t,e){for(var r=new C,n=t.iterator();n.hasNext();){var i=n.next();(e||i.isIncluded())&&r.add(i.getPolygon())}return r}static assignHolesToShells(t,e){for(var r=t.iterator();r.hasNext();){var n=r.next();lo.assignHoleToShell(n,e)}}static assignHoleToShell(t,e){var r=oo.findEdgeRingContaining(t,e);null!==r&&r.addHole(t)}static findDisjointShells(t){lo.findOuterShells(t);var e=null;do{e=!1;for(var r=t.iterator();r.hasNext();){var n=r.next();n.isIncludedSet()||(n.updateIncluded(),n.isIncludedSet()||(e=!0))}}while(e)}getGeometry(){return null===this._geomFactory&&(this._geomFactory=new ae),this.polygonize(),this._extractOnlyPolygonal?this._geomFactory.buildGeometry(this._polyList):this._geomFactory.createGeometryCollection(ae.toGeometryArray(this._polyList))}getInvalidRingLines(){return this.polygonize(),this._invalidRingLines}findValidRings(t,e,r){for(var n=t.iterator();n.hasNext();){var i=n.next();i.isValid()?e.add(i):r.add(i.getLineString())}}polygonize(){if(null!==this._polyList)return null;if(this._polyList=new C,null===this._graph)return null;this._dangles=this._graph.deleteDangles(),this._cutEdges=this._graph.deleteCutEdges();var t=this._graph.getEdgeRings(),e=new C;this._invalidRingLines=new C,this._isCheckingRingsValid?this.findValidRings(t,e,this._invalidRingLines):e=t,this.findShellsAndHoles(e),lo.assignHolesToShells(this._holeList,this._shellList),Le.sort(this._shellList,new oo.EnvelopeComparator);var r=!0;this._extractOnlyPolygonal&&(lo.findDisjointShells(this._shellList),r=!1),this._polyList=lo.extractPolygons(this._shellList,r)}getDangles(){return this.polygonize(),this._dangles}getCutEdges(){return this.polygonize(),this._cutEdges}getPolygons(){return this.polygonize(),this._polyList}add(){if(b(arguments[0],w))for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();this.add(e)}else if(arguments[0]instanceof jt){let t=arguments[0];this._geomFactory=t.getFactory(),null===this._graph&&(this._graph=new so(this._geomFactory)),this._graph.addEdge(t)}else arguments[0]instanceof W&&arguments[0].apply(this._lineStringAdder)}setCheckRingsValid(t){this._isCheckingRingsValid=t}findShellsAndHoles(t){this._holeList=new C,this._shellList=new C;for(var e=t.iterator();e.hasNext();){var r=e.next();r.computeHole(),r.isHole()?this._holeList.add(r):this._shellList.add(r)}}getClass(){return lo}get interfaces_(){return[]}}class uo{constructor(){uo.constructor_.apply(this,arguments)}filter(t){t instanceof jt&&this.p.add(t)}getClass(){return uo}get interfaces_(){return[Y]}}uo.constructor_=function(){this.p=null;let t=arguments[0];this.p=t},lo.LineStringAdder=uo,lo.constructor_=function(){if(this._lineStringAdder=new uo(this),this._graph=null,this._dangles=new C,this._cutEdges=new C,this._invalidRingLines=new C,this._holeList=null,this._shellList=null,this._polyList=null,this._isCheckingRingsValid=!0,this._extractOnlyPolygonal=null,this._geomFactory=null,0===arguments.length)lo.constructor_.call(this,!1);else if(1===arguments.length){let t=arguments[0];this._extractOnlyPolygonal=t}};var co=Object.freeze({Polygonizer:lo});class ho{constructor(){ho.constructor_.apply(this,arguments)}createEdgeEndForNext(t,e,r,n){var i=r.segmentIndex+1;if(i>=t.getNumPoints()&&null===n)return null;var o=t.getCoordinate(i);null!==n&&n.segmentIndex===r.segmentIndex&&(o=n.coord);var a=new Dr(t,r.coord,o,new Tr(t.getLabel()));e.add(a)}createEdgeEndForPrev(t,e,r,n){var i=r.segmentIndex;if(0===r.dist){if(0===i)return null;i--}var o=t.getCoordinate(i);null!==n&&n.segmentIndex>=i&&(o=n.coord);var a=new Tr(t.getLabel());a.flip();var s=new Dr(t,r.coord,o,a);e.add(s)}computeEdgeEnds(){if(1===arguments.length){let n=arguments[0];for(var t=new C,e=n;e.hasNext();){var r=e.next();this.computeEdgeEnds(r,t)}return t}if(2===arguments.length){let t=arguments[0],e=arguments[1];var n=t.getEdgeIntersectionList();n.addEndpoints();var i=n.iterator(),o=null,a=null;if(!i.hasNext())return null;var s=i.next();do{o=a,a=s,s=null,i.hasNext()&&(s=i.next()),null!==a&&(this.createEdgeEndForPrev(t,e,a,o),this.createEdgeEndForNext(t,e,a,s))}while(null!==a)}}getClass(){return ho}get interfaces_(){return[]}}ho.constructor_=function(){};class fo extends Dr{constructor(){super(),fo.constructor_.apply(this,arguments)}insert(t){this._edgeEnds.add(t)}print(t){t.println("EdgeEndBundle--\x3e Label: "+this._label);for(var e=this.iterator();e.hasNext();)e.next().print(t),t.println()}iterator(){return this._edgeEnds.iterator()}getEdgeEnds(){return this._edgeEnds}computeLabelOn(t,e){for(var r=0,n=!1,i=this.iterator();i.hasNext();)(o=i.next().getLabel().getLocation(t))===ge.BOUNDARY&&r++,o===ge.INTERIOR&&(n=!0);var o=ge.NONE;n&&(o=ge.INTERIOR),r>0&&(o=Vr.determineBoundary(e,r)),this._label.setLocation(t,o)}computeLabelSide(t,e){for(var r=this.iterator();r.hasNext();){var n=r.next();if(n.getLabel().isArea()){var i=n.getLabel().getLocation(t,e);if(i===ge.INTERIOR)return this._label.setLocation(t,e,ge.INTERIOR),null;i===ge.EXTERIOR&&this._label.setLocation(t,e,ge.EXTERIOR)}}}getLabel(){return this._label}computeLabelSides(t){this.computeLabelSide(t,xr.LEFT),this.computeLabelSide(t,xr.RIGHT)}updateIM(t){kr.updateIM(this._label,t)}computeLabel(t){for(var e=!1,r=this.iterator();r.hasNext();)r.next().getLabel().isArea()&&(e=!0);this._label=e?new Tr(ge.NONE,ge.NONE,ge.NONE):new Tr(ge.NONE);for(var n=0;n<2;n++)this.computeLabelOn(n,t),e&&this.computeLabelSides(n)}getClass(){return fo}get interfaces_(){return[]}}fo.constructor_=function(){if(this._edgeEnds=new C,1===arguments.length){let t=arguments[0];fo.constructor_.call(this,null,t)}else if(2===arguments.length){let t=arguments[1];Dr.constructor_.call(this,t.getEdge(),t.getCoordinate(),t.getDirectedCoordinate(),new Tr(t.getLabel())),this.insert(t)}};class po extends ri{constructor(){super(),po.constructor_.apply(this,arguments)}updateIM(t){for(var e=this.iterator();e.hasNext();)e.next().updateIM(t)}insert(t){var e=this._edgeMap.get(t);null===e?(e=new fo(t),this.insertEdgeEnd(t,e)):e.insert(t)}getClass(){return po}get interfaces_(){return[]}}po.constructor_=function(){};class go extends jr{constructor(){super(),go.constructor_.apply(this,arguments)}updateIMFromEdges(t){this._edges.updateIM(t)}computeIM(t){t.setAtLeastIfValid(this._label.getLocation(0),this._label.getLocation(1),0)}getClass(){return go}get interfaces_(){return[]}}go.constructor_=function(){let t=arguments[0],e=arguments[1];jr.constructor_.call(this,t,e)};class yo extends Br{constructor(){super(),yo.constructor_.apply(this,arguments)}createNode(t){return new go(t,new po)}getClass(){return yo}get interfaces_(){return[]}}yo.constructor_=function(){};class mo{constructor(){mo.constructor_.apply(this,arguments)}insertEdgeEnds(t){for(var e=t.iterator();e.hasNext();){var r=e.next();this._nodes.add(r)}}computeProperIntersectionIM(t,e){var r=this._arg[0].getGeometry().getDimension(),n=this._arg[1].getGeometry().getDimension(),i=t.hasProperIntersection(),o=t.hasProperInteriorIntersection();2===r&&2===n?i&&e.setAtLeast("212101212"):2===r&&1===n?(i&&e.setAtLeast("FFF0FFFF2"),o&&e.setAtLeast("1FFFFF1FF")):1===r&&2===n?(i&&e.setAtLeast("F0FFFFFF2"),o&&e.setAtLeast("1F1FFFFFF")):1===r&&1===n&&o&&e.setAtLeast("0FFFFFFFF")}labelIsolatedEdges(t,e){for(var r=this._arg[t].getEdgeIterator();r.hasNext();){var n=r.next();n.isIsolated()&&(this.labelIsolatedEdge(n,e,this._arg[e].getGeometry()),this._isolatedEdges.add(n))}}labelIsolatedEdge(t,e,r){if(r.getDimension()>0){var n=this._ptLocator.locate(t.getCoordinate(),r);t.getLabel().setAllLocations(e,n)}else t.getLabel().setAllLocations(e,ge.EXTERIOR)}computeIM(){var t=new ye;if(t.set(ge.EXTERIOR,ge.EXTERIOR,2),!this._arg[0].getGeometry().getEnvelopeInternal().intersects(this._arg[1].getGeometry().getEnvelopeInternal()))return this.computeDisjointIM(t),t;this._arg[0].computeSelfNodes(this._li,!1),this._arg[1].computeSelfNodes(this._li,!1);var e=this._arg[0].computeEdgeIntersections(this._arg[1],this._li,!1);this.computeIntersectionNodes(0),this.computeIntersectionNodes(1),this.copyNodesAndLabels(0),this.copyNodesAndLabels(1),this.labelIsolatedNodes(),this.computeProperIntersectionIM(e,t);var r=new ho,n=r.computeEdgeEnds(this._arg[0].getEdgeIterator());this.insertEdgeEnds(n);var i=r.computeEdgeEnds(this._arg[1].getEdgeIterator());return this.insertEdgeEnds(i),this.labelNodeEdges(),this.labelIsolatedEdges(0,1),this.labelIsolatedEdges(1,0),this.updateIM(t),t}labelNodeEdges(){for(var t=this._nodes.iterator();t.hasNext();)t.next().getEdges().computeLabelling(this._arg)}copyNodesAndLabels(t){for(var e=this._arg[t].getNodeIterator();e.hasNext();){var r=e.next();this._nodes.addNode(r.getCoordinate()).setLabel(t,r.getLabel().getLocation(t))}}labelIntersectionNodes(t){for(var e=this._arg[t].getEdgeIterator();e.hasNext();)for(var r=e.next(),n=r.getLabel().getLocation(t),i=r.getEdgeIntersectionList().iterator();i.hasNext();){var o=i.next(),a=this._nodes.find(o.coord);a.getLabel().isNull(t)&&(n===ge.BOUNDARY?a.setLabelBoundary(t):a.setLabel(t,ge.INTERIOR))}}labelIsolatedNode(t,e){var r=this._ptLocator.locate(t.getCoordinate(),this._arg[e].getGeometry());t.getLabel().setAllLocations(e,r)}computeIntersectionNodes(t){for(var e=this._arg[t].getEdgeIterator();e.hasNext();)for(var r=e.next(),n=r.getLabel().getLocation(t),i=r.getEdgeIntersectionList().iterator();i.hasNext();){var o=i.next(),a=this._nodes.addNode(o.coord);n===ge.BOUNDARY?a.setLabelBoundary(t):a.getLabel().isNull(t)&&a.setLabel(t,ge.INTERIOR)}}labelIsolatedNodes(){for(var t=this._nodes.iterator();t.hasNext();){var e=t.next(),r=e.getLabel();m.isTrue(r.getGeometryCount()>0,"node with empty label found"),e.isIsolated()&&(r.isNull(0)?this.labelIsolatedNode(e,0):this.labelIsolatedNode(e,1))}}updateIM(t){for(var e=this._isolatedEdges.iterator();e.hasNext();)e.next().updateIM(t);for(var r=this._nodes.iterator();r.hasNext();){var n=r.next();n.updateIM(t),n.updateIMFromEdges(t)}}computeDisjointIM(t){var e=this._arg[0].getGeometry();e.isEmpty()||(t.set(ge.INTERIOR,ge.EXTERIOR,e.getDimension()),t.set(ge.BOUNDARY,ge.EXTERIOR,e.getBoundaryDimension()));var r=this._arg[1].getGeometry();r.isEmpty()||(t.set(ge.EXTERIOR,ge.INTERIOR,r.getDimension()),t.set(ge.EXTERIOR,ge.BOUNDARY,r.getBoundaryDimension()))}getClass(){return mo}get interfaces_(){return[]}}mo.constructor_=function(){this._li=new pe,this._ptLocator=new br,this._arg=null,this._nodes=new Fr(new yo),this._im=null,this._isolatedEdges=new C,this._invalidPoint=null;let t=arguments[0];this._arg=t};class _o{constructor(){_o.constructor_.apply(this,arguments)}static contains(t,e){return new _o(t).contains(e)}isContainedInBoundary(t){if(t instanceof Bt)return!1;if(t instanceof Dt)return this.isPointContainedInBoundary(t);if(t instanceof jt)return this.isLineStringContainedInBoundary(t);for(var e=0;e0){var n=t;t=e,e=n}var i=!1;return e.y>t.y&&(i=!0),i?this._li.computeIntersection(t,e,this._diagDown0,this._diagDown1):this._li.computeIntersection(t,e,this._diagUp0,this._diagUp1),!!this._li.hasIntersection()}getClass(){return vo}get interfaces_(){return[]}}vo.constructor_=function(){this._li=new pe,this._rectEnv=null,this._diagUp0=null,this._diagUp1=null,this._diagDown0=null,this._diagDown1=null;let t=arguments[0];this._rectEnv=t,this._diagUp0=new _(t.getMinX(),t.getMinY()),this._diagUp1=new _(t.getMaxX(),t.getMaxY()),this._diagDown0=new _(t.getMinX(),t.getMaxY()),this._diagDown1=new _(t.getMaxX(),t.getMinY())};class bo{constructor(){bo.constructor_.apply(this,arguments)}applyTo(t){for(var e=0;e=this._rectEnv.getMinX()&&e.getMaxX()<=this._rectEnv.getMaxX()||e.getMinY()>=this._rectEnv.getMinY()&&e.getMaxY()<=this._rectEnv.getMaxY()?(this._intersects=!0,null):void 0:null}intersects(){return this._intersects}getClass(){return wo}get interfaces_(){return[]}}wo.constructor_=function(){this._rectEnv=null,this._intersects=!1;let t=arguments[0];this._rectEnv=t};class Eo extends bo{constructor(){super(),Eo.constructor_.apply(this,arguments)}isDone(){return!0===this._containsPoint}visit(t){if(!(t instanceof Bt))return null;var e=t.getEnvelopeInternal();if(!this._rectEnv.intersects(e))return null;for(var r=new _,n=0;n<4;n++)if(this._rectSeq.getCoordinate(n,r),e.contains(r)&&ze.containsPointInPolygon(r,t))return this._containsPoint=!0,null}containsPoint(){return this._containsPoint}getClass(){return Eo}get interfaces_(){return[]}}Eo.constructor_=function(){this._rectSeq=null,this._rectEnv=null,this._containsPoint=!1;let t=arguments[0];this._rectSeq=t.getExteriorRing().getCoordinateSequence(),this._rectEnv=t.getEnvelopeInternal()};class Oo extends bo{constructor(){super(),Oo.constructor_.apply(this,arguments)}intersects(){return this._hasIntersection}isDone(){return!0===this._hasIntersection}visit(t){var e=t.getEnvelopeInternal();if(!this._rectEnv.intersects(e))return null;var r=Ae.getLines(t);this.checkIntersectionWithLineStrings(r)}checkIntersectionWithLineStrings(t){for(var e=t.iterator();e.hasNext();){var r=e.next();if(this.checkIntersectionWithSegments(r),this._hasIntersection)return null}}checkIntersectionWithSegments(t){for(var e=t.getCoordinateSequence(),r=1;r0)&&!!t.getEnvelopeInternal().covers(e.getEnvelopeInternal())&&(!!t.isRectangle()||new So(t,e).getIntersectionMatrix().isCovers())}static intersects(t,e){if(!t.getEnvelopeInternal().intersects(e.getEnvelopeInternal()))return!1;if(t.isRectangle())return xo.intersects(t,e);if(e.isRectangle())return xo.intersects(e,t);if(t.isGeometryCollection()||e.isGeometryCollection()){for(var r=0;r0)&&!!t.getEnvelopeInternal().contains(e.getEnvelopeInternal())&&(t.isRectangle()?_o.contains(t,e):new So(t,e).getIntersectionMatrix().isContains())}getIntersectionMatrix(){return this._relate.computeIM()}getClass(){return So}get interfaces_(){return[]}}So.constructor_=function(){if(this._relate=null,2===arguments.length){let t=arguments[0],e=arguments[1];to.constructor_.call(this,t,e),this._relate=new mo(this._arg)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];to.constructor_.call(this,t,e,r),this._relate=new mo(this._arg)}};var Io=Object.freeze({RelateOp:So});class Co{constructor(){Co.constructor_.apply(this,arguments)}static combine(){if(1===arguments.length)return new Co(arguments[0]).combine();if(2===arguments.length){let t=arguments[0],e=arguments[1];return new Co(Co.createList(t,e)).combine()}if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];return new Co(Co.createList(t,e,r)).combine()}}static extractFactory(t){return t.isEmpty()?null:t.iterator().next().getFactory()}static createList(){if(2===arguments.length){let e=arguments[0],r=arguments[1];return(t=new C).add(e),t.add(r),t}if(3===arguments.length){let e=arguments[0],r=arguments[1],n=arguments[2];var t;return(t=new C).add(e),t.add(r),t.add(n),t}}extractElements(t,e){if(null===t)return null;for(var r=0;r=t.size()?null:t.get(e)}static union(t){return new Ro(t).union()}reduceToGeometries(t){for(var e=new C,r=t.iterator();r.hasNext();){var n=r.next(),i=null;b(n,O)?i=this.unionTree(n):n instanceof W&&(i=n),e.add(i)}return e}extractByEnvelope(t,e,r){for(var n=new C,i=0;i0){var e=this._geomFact.buildGeometry(this._points);t=this.unionNoOpt(e)}var r=null;if(this._lines.size()>0){var n=this._geomFact.buildGeometry(this._lines);r=this.unionNoOpt(n)}var i=null;this._polygons.size()>0&&(i=Ro.union(this._polygons));var o=this.unionWithNull(r,i),a=null;return null===(a=null===t?o:null===o?t:To.union(t,o))?this._geomFact.createGeometryCollection():a}getClass(){return Lo}get interfaces_(){return[]}}Lo.constructor_=function(){if(this._polygons=new C,this._lines=new C,this._points=new C,this._geomFact=null,1===arguments.length){if(b(arguments[0],w)){let t=arguments[0];this.extract(t)}else if(arguments[0]instanceof W){let t=arguments[0];this.extract(t)}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this._geomFact=e,this.extract(t)}};var Mo=Object.freeze({UnaryUnionOp:Lo});class No{constructor(){No.constructor_.apply(this,arguments)}static findDifferentPoint(t,e){for(var r=0;r1)return this._invalidPoint=r.getEdge().getCoordinate(0),!0}return!1}isNodeConsistentArea(){var t=this._geomGraph.computeSelfNodes(this._li,!0,!0);return t.hasProperIntersection()?(this._invalidPoint=t.getProperIntersectionPoint(),!1):(this._nodeGraph.build(this._geomGraph),this.isNodeEdgeAreaLabelsConsistent())}getClass(){return ko}get interfaces_(){return[]}}ko.constructor_=function(){this._li=new pe,this._geomGraph=null,this._nodeGraph=new Ao,this._invalidPoint=null;let t=arguments[0];this._geomGraph=t};class jo{constructor(){jo.constructor_.apply(this,arguments)}buildIndex(){this._index=new pn;for(var t=0;t=1&&(e=t.getCoordinateN(0)),this._validErr=new Fo(Fo.RING_NOT_CLOSED,e)}}checkShellsNotNested(t,e){for(var r=0;r=2&&(n=!0),e.edit(t,new Bo(this._targetPM,n))}changePM(t,e){return this.createEditor(t.getFactory(),e).edit(t,new Yt.NoOpGeometryOperation)}setRemoveCollapsedComponents(t){this._removeCollapsed=t}createFactory(t,e){return new ae(e,t.getSRID(),t.getCoordinateSequenceFactory())}setChangePrecisionModel(t){this._changePrecisionModel=t}reduce(t){var e=this.reducePointwise(t);return this._isPointwise?e:b(e,Ut)?Do.isValid(e)?e:this.fixPolygonalTopology(e):e}setPointwise(t){this._isPointwise=t}createEditor(t,e){if(t.getPrecisionModel()===e)return new Yt;var r=this.createFactory(t,e);return new Yt(r)}getClass(){return zo}get interfaces_(){return[]}}zo.constructor_=function(){this._targetPM=null,this._removeCollapsed=!0,this._changePrecisionModel=!1,this._isPointwise=!1;let t=arguments[0];this._targetPM=t};var Vo=Object.freeze({GeometryPrecisionReducer:zo});class qo{constructor(){qo.constructor_.apply(this,arguments)}static simplify(t,e){var r=new qo(t);return r.setDistanceTolerance(e),r.simplify()}simplifySection(t,e){if(t+1===e)return null;this._seg.p0=this._pts[t],this._seg.p1=this._pts[e];for(var r=-1,n=t,i=t+1;ir&&(r=o,n=i)}if(r<=this._distanceTolerance)for(i=t+1;i=e[0]&&nthis._distanceTolerance&&(o=!1);var l=new de;if(l.p0=this._linePts[t],l.p1=this._linePts[e],n[0]=t,n[1]=e,this.hasBadIntersection(this._line,n,l)&&(o=!1),o)return i=this.flatten(t,e),this._line.addToResult(i),null;this.simplifySection(t,s,r),this.simplifySection(s,e,r)}hasBadOutputIntersection(t){for(var e=this._outputIndex.query(t).iterator();e.hasNext();){var r=e.next();if(this.hasInteriorIntersection(r,t))return!0}return!1}findFurthestPoint(t,e,r,n){var i=new de;i.p0=t[e],i.p1=t[r];for(var o=-1,a=e,s=e+1;so&&(o=u,a=s)}return n[0]=o,a}simplify(t){this._line=t,this._linePts=t.getParentCoordinates(),this.simplifySection(0,this._linePts.length-1,0)}remove(t,e,r){for(var n=e;nn&&(a=n),i.setMinimumLength(a),i.splitAt(o),i.getSplitPoint()}getClass(){return oa}get interfaces_(){return[ia]}}oa.constructor_=function(){};class aa{constructor(){aa.constructor_.apply(this,arguments)}static triArea(t,e,r){return(e.x-t.x)*(r.y-t.y)-(e.y-t.y)*(r.x-t.x)}static isInCircleDDNormalized(t,e,r,n){var i=j.valueOf(t.x).selfSubtract(n.x),o=j.valueOf(t.y).selfSubtract(n.y),a=j.valueOf(e.x).selfSubtract(n.x),s=j.valueOf(e.y).selfSubtract(n.y),l=j.valueOf(r.x).selfSubtract(n.x),u=j.valueOf(r.y).selfSubtract(n.y),c=i.multiply(s).selfSubtract(a.multiply(o)),h=a.multiply(u).selfSubtract(l.multiply(s)),f=l.multiply(o).selfSubtract(i.multiply(u)),p=i.multiply(i).selfAdd(o.multiply(o)),d=a.multiply(a).selfAdd(s.multiply(s)),g=l.multiply(l).selfAdd(u.multiply(u));return p.selfMultiply(h).selfAdd(d.selfMultiply(f)).selfAdd(g.selfMultiply(c)).doubleValue()>0}static checkRobustInCircle(t,e,r,n){var i=aa.isInCircleNonRobust(t,e,r,n),o=aa.isInCircleDDSlow(t,e,r,n),a=aa.isInCircleCC(t,e,r,n),s=_e.circumcentre(t,e,r);G.out.println("p radius diff a = "+Math.abs(n.distance(s)-t.distance(s))/t.distance(s)),i===o&&i===a||(G.out.println("inCircle robustness failure (double result = "+i+", DD result = "+o+", CC result = "+a+")"),G.out.println(he.toLineString(new Kt([t,e,r,n]))),G.out.println("Circumcentre = "+he.toPoint(s)+" radius = "+t.distance(s)),G.out.println("p radius diff a = "+Math.abs(n.distance(s)/t.distance(s)-1)),G.out.println("p radius diff b = "+Math.abs(n.distance(s)/e.distance(s)-1)),G.out.println("p radius diff c = "+Math.abs(n.distance(s)/r.distance(s)-1)),G.out.println())}static isInCircleDDFast(t,e,r,n){var i=j.sqr(t.x).selfAdd(j.sqr(t.y)).selfMultiply(aa.triAreaDDFast(e,r,n)),o=j.sqr(e.x).selfAdd(j.sqr(e.y)).selfMultiply(aa.triAreaDDFast(t,r,n)),a=j.sqr(r.x).selfAdd(j.sqr(r.y)).selfMultiply(aa.triAreaDDFast(t,e,n)),s=j.sqr(n.x).selfAdd(j.sqr(n.y)).selfMultiply(aa.triAreaDDFast(t,e,r));return i.selfSubtract(o).selfAdd(a).selfSubtract(s).doubleValue()>0}static isInCircleCC(t,e,r,n){var i=_e.circumcentre(t,e,r),o=t.distance(i);return n.distance(i)-o<=0}static isInCircleNormalized(t,e,r,n){var i=t.x-n.x,o=t.y-n.y,a=e.x-n.x,s=e.y-n.y,l=r.x-n.x,u=r.y-n.y;return(i*i+o*o)*(a*u-l*s)+(a*a+s*s)*(l*o-i*u)+(l*l+u*u)*(i*s-a*o)>0}static isInCircleDDSlow(t,e,r,n){var i=j.valueOf(n.x),o=j.valueOf(n.y),a=j.valueOf(t.x),s=j.valueOf(t.y),l=j.valueOf(e.x),u=j.valueOf(e.y),c=j.valueOf(r.x),h=j.valueOf(r.y),f=a.multiply(a).add(s.multiply(s)).multiply(aa.triAreaDDSlow(l,u,c,h,i,o)),p=l.multiply(l).add(u.multiply(u)).multiply(aa.triAreaDDSlow(a,s,c,h,i,o)),d=c.multiply(c).add(h.multiply(h)).multiply(aa.triAreaDDSlow(a,s,l,u,i,o)),g=i.multiply(i).add(o.multiply(o)).multiply(aa.triAreaDDSlow(a,s,l,u,c,h));return f.subtract(p).add(d).subtract(g).doubleValue()>0}static isInCircleNonRobust(t,e,r,n){return(t.x*t.x+t.y*t.y)*aa.triArea(e,r,n)-(e.x*e.x+e.y*e.y)*aa.triArea(t,r,n)+(r.x*r.x+r.y*r.y)*aa.triArea(t,e,n)-(n.x*n.x+n.y*n.y)*aa.triArea(t,e,r)>0}static isInCircleRobust(t,e,r,n){return aa.isInCircleNormalized(t,e,r,n)}static triAreaDDSlow(t,e,r,n,i,o){return r.subtract(t).multiply(o.subtract(e)).subtract(n.subtract(e).multiply(i.subtract(t)))}static triAreaDDFast(t,e,r){var n=j.valueOf(e.x).selfSubtract(t.x).selfMultiply(j.valueOf(r.y).selfSubtract(t.y)),i=j.valueOf(e.y).selfSubtract(t.y).selfMultiply(j.valueOf(r.x).selfSubtract(t.x));return n.selfSubtract(i)}getClass(){return aa}get interfaces_(){return[]}}aa.constructor_=function(){};class sa{constructor(){sa.constructor_.apply(this,arguments)}static interpolateZ(){if(3===arguments.length){let n=arguments[0],i=arguments[1],o=arguments[2];var t=i.distance(o),e=n.distance(i),r=o.z-i.z;return i.z+r*(e/t)}if(4===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2],d=arguments[3];var n=e.x,i=e.y,o=r.x-n,a=d.x-n,s=r.y-i,l=d.y-i,u=o*l-a*s,c=t.x-n,h=t.y-i,f=(l*c-a*h)/u,p=(-s*c+o*h)/u;return e.z+f*(r.z-e.z)+p*(d.z-e.z)}}circleCenter(t,e){var r=new sa(this.getX(),this.getY()),n=this.bisector(r,t),i=this.bisector(t,e),o=new U(n,i),a=null;try{a=new sa(o.getX(),o.getY())}catch(n){if(!(n instanceof M))throw n;G.err.println("a: "+r+" b: "+t+" c: "+e),G.err.println(n)}return a}dot(t){return this._p.x*t.getX()+this._p.y*t.getY()}magn(){return Math.sqrt(this._p.x*this._p.x+this._p.y*this._p.y)}getZ(){return this._p.z}bisector(t,e){var r=e.getX()-t.getX(),n=e.getY()-t.getY(),i=new U(t.getX()+r/2,t.getY()+n/2,1),o=new U(t.getX()-n+r/2,t.getY()+r+n/2,1);return new U(i,o)}equals(){if(1===arguments.length){let t=arguments[0];return this._p.x===t.getX()&&this._p.y===t.getY()}if(2===arguments.length){let t=arguments[0],e=arguments[1];return this._p.distance(t.getCoordinate())0}getX(){return this._p.x}crossProduct(t){return this._p.x*t.getY()-this._p.y*t.getX()}setZ(t){this._p.z=t}times(t){return new sa(t*this._p.x,t*this._p.y)}cross(){return new sa(this._p.y,-this._p.x)}leftOf(t){return this.isCCW(t.orig(),t.dest())}toString(){return"POINT ("+this._p.x+" "+this._p.y+")"}sub(t){return new sa(this._p.x-t.getX(),this._p.y-t.getY())}getY(){return this._p.y}classify(t,e){var r=e.sub(t),n=this.sub(t),i=r.crossProduct(n);return i>0?sa.LEFT:i<0?sa.RIGHT:r.getX()*n.getX()<0||r.getY()*n.getY()<0?sa.BEHIND:r.magn()0};class ha{constructor(){ha.constructor_.apply(this,arguments)}locate(t){}getClass(){return ha}get interfaces_(){return[]}}ha.constructor_=function(){};class fa{constructor(){fa.constructor_.apply(this,arguments)}init(){this._lastEdge=this.findEdge()}locate(t){this._lastEdge.isLive()||this.init();var e=this._subdiv.locateFromEdge(t,this._lastEdge);return this._lastEdge=e,e}findEdge(){return this._subdiv.getEdges().iterator().next()}getClass(){return fa}get interfaces_(){return[ha]}}fa.constructor_=function(){this._subdiv=null,this._lastEdge=null;let t=arguments[0];this._subdiv=t,this.init()};class pa extends g{constructor(){super(),pa.constructor_.apply(this,arguments)}static msgWithSpatial(t,e){return null!==e?t+" [ "+e+" ]":t}getSegment(){return this._seg}getClass(){return pa}get interfaces_(){return[]}}pa.constructor_=function(){if(this._seg=null,1===arguments.length){if("string"==typeof arguments[0]){let t=arguments[0];g.constructor_.call(this,t)}else if(arguments[0]instanceof de){let t=arguments[0];g.constructor_.call(this,"Locate failed to converge (at edge: "+t+"). Possible causes include invalid Subdivision topology or very close sites"),this._seg=new de(t)}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];g.constructor_.call(this,pa.msgWithSpatial(t,e)),this._seg=new de(e)}};class da{constructor(){da.constructor_.apply(this,arguments)}visit(t){}getClass(){return da}get interfaces_(){return[]}}da.constructor_=function(){};class ga{constructor(){ga.constructor_.apply(this,arguments)}static getTriangleEdges(t,e){if(e[0]=t,e[1]=e[0].lNext(),e[2]=e[1].lNext(),e[2].lNext()!==e[0])throw new r("Edges do not form a triangle")}getTriangleVertices(t){var e=new _a;return this.visitTriangles(e,t),e.getTriangleVertices()}isFrameVertex(t){return!!t.equals(this._frameVertex[0])||!!t.equals(this._frameVertex[1])||!!t.equals(this._frameVertex[2])}isVertexOfEdge(t,e){return!(!e.equals(t.orig(),this._tolerance)&&!e.equals(t.dest(),this._tolerance))}connect(t,e){var r=ua.connect(t,e);return this._quadEdges.add(r),r}getVoronoiCellPolygon(t,e){var r=new C,n=t;do{var i=t.rot().orig().getCoordinate();r.add(i),t=t.oPrev()}while(t!==n);var o=new P;o.addAll(r,!1),o.closeRing(),o.size()<4&&(G.out.println(o),o.add(o.get(o.size()-1),!0));var a=o.toCoordinateArray(),s=e.createPolygon(e.createLinearRing(a)),l=n.orig();return s.setUserData(l.getCoordinate()),s}setLocator(t){this._locator=t}initSubdiv(){var t=this.makeEdge(this._frameVertex[0],this._frameVertex[1]),e=this.makeEdge(this._frameVertex[1],this._frameVertex[2]);ua.splice(t.sym(),e);var r=this.makeEdge(this._frameVertex[2],this._frameVertex[0]);return ua.splice(e.sym(),r),ua.splice(r.sym(),t),t}isFrameBorderEdge(t){var e=new Array(3).fill(null);ga.getTriangleEdges(t,e);var r=new Array(3).fill(null);ga.getTriangleEdges(t.sym(),r);var n=t.lNext().dest();if(this.isFrameVertex(n))return!0;var i=t.sym().lNext().dest();return!!this.isFrameVertex(i)}makeEdge(t,e){var r=ua.makeEdge(t,e);return this._quadEdges.add(r),r}visitTriangles(t,e){this._visitedKey++;var r=new Je;r.push(this._startingEdge);for(var n=new ot;!r.empty();){var i=r.pop();if(!n.contains(i)){var o=this.fetchTriangleToVisit(i,r,e,n);null!==o&&t.visit(o)}}}isFrameEdge(t){return!(!this.isFrameVertex(t.orig())&&!this.isFrameVertex(t.dest()))}isOnEdge(t,e){return this._seg.setCoordinates(t.orig().getCoordinate(),t.dest().getCoordinate()),this._seg.distance(e)r?10*e:10*r,this._frameVertex[0]=new sa((t.getMaxX()+t.getMinX())/2,t.getMaxY()+n),this._frameVertex[1]=new sa(t.getMinX()-n,t.getMinY()-n),this._frameVertex[2]=new sa(t.getMaxX()+n,t.getMinY()-n),this._frameEnv=new R(this._frameVertex[0].getCoordinate(),this._frameVertex[1].getCoordinate()),this._frameEnv.expandToInclude(this._frameVertex[2].getCoordinate())}getTriangleCoordinates(t){var e=new va;return this.visitTriangles(e,t),e.getTriangles()}getVertices(t){for(var e=new ot,r=this._quadEdges.iterator();r.hasNext();){var n=r.next(),i=n.orig();!t&&this.isFrameVertex(i)||e.add(i);var o=n.dest();!t&&this.isFrameVertex(o)||e.add(o)}return e}fetchTriangleToVisit(t,e,r,n){var i=t,o=0,a=!1;do{this._triEdges[o]=i,this.isFrameEdge(i)&&(a=!0);var s=i.sym();n.contains(s)||e.push(s),n.add(i),o++,i=i.lNext()}while(i!==t);return a&&!r?null:this._triEdges}getEdges(){if(0===arguments.length)return this._quadEdges;if(1===arguments.length){let o=arguments[0];for(var t=this.getPrimaryEdges(!1),e=new Array(t.size()).fill(null),r=0,n=t.iterator();n.hasNext();){var i=n.next();e[r++]=o.createLineString([i.orig().getCoordinate(),i.dest().getCoordinate()])}return o.createMultiLineString(e)}}getVertexUniqueEdges(t){for(var e=new C,r=new ot,n=this._quadEdges.iterator();n.hasNext();){var i=n.next(),o=i.orig();r.contains(o)||(r.add(o),!t&&this.isFrameVertex(o)||e.add(i));var a=i.sym(),s=a.orig();r.contains(s)||(r.add(s),!t&&this.isFrameVertex(s)||e.add(a))}return e}getTriangleEdges(t){var e=new ma;return this.visitTriangles(e,t),e.getTriangleEdges()}getPrimaryEdges(t){this._visitedKey++;var e=new C,r=new Je;r.push(this._startingEdge);for(var n=new ot;!r.empty();){var i=r.pop();if(!n.contains(i)){var o=i.getPrimary();!t&&this.isFrameEdge(o)||e.add(o),r.push(i.oNext()),r.push(i.sym().oNext()),n.add(i),n.add(i.sym())}}return e}delete(t){ua.splice(t,t.oPrev()),ua.splice(t.sym(),t.sym().oPrev());var e=t.sym(),r=t.rot(),n=t.rot().sym();this._quadEdges.remove(t),this._quadEdges.remove(e),this._quadEdges.remove(r),this._quadEdges.remove(n),t.delete(),e.delete(),r.delete(),n.delete()}locateFromEdge(t,e){for(var r=0,n=this._quadEdges.size(),i=e;;){if(++r>n)throw new pa(i.toLineSegment());if(t.equals(i.orig())||t.equals(i.dest()))break;if(t.rightOf(i))i=i.sym();else if(t.rightOf(i.oNext())){if(t.rightOf(i.dPrev()))break;i=i.dPrev()}else i=i.oNext()}return i}getTolerance(){return this._tolerance}getVoronoiCellPolygons(t){this.visitTriangles(new ya,!0);for(var e=new C,r=this.getVertexUniqueEdges(!1).iterator();r.hasNext();){var n=r.next();e.add(this.getVoronoiCellPolygon(n,t))}return e}getVoronoiDiagram(t){var e=this.getVoronoiCellPolygons(t);return t.createGeometryCollection(ae.toGeometryArray(e))}getTriangles(t){for(var e=this.getTriangleCoordinates(!1),r=new Array(e.size()).fill(null),n=0,i=e.iterator();i.hasNext();){var o=i.next();r[n++]=t.createPolygon(t.createLinearRing(o))}return t.createGeometryCollection(r)}insertSite(t){var e=this.locate(t);if(t.equals(e.orig(),this._tolerance)||t.equals(e.dest(),this._tolerance))return e;var r=this.makeEdge(e.orig(),t);ua.splice(r,e);var n=r;do{e=(r=this.connect(e,r.sym())).oPrev()}while(e.lNext()!==n);return n}locate(){if(1===arguments.length){if(arguments[0]instanceof sa){let t=arguments[0];return this._locator.locate(t)}if(arguments[0]instanceof _){let t=arguments[0];return this._locator.locate(new sa(t))}}else if(2===arguments.length){let n=arguments[0],i=arguments[1];var t=this._locator.locate(new sa(n));if(null===t)return null;var e=t;t.dest().getCoordinate().equals2D(n)&&(e=t.sym());var r=e;do{if(r.dest().getCoordinate().equals2D(i))return r;r=r.oNext()}while(r!==e);return null}}getClass(){return ga}get interfaces_(){return[]}}class ya{constructor(){ya.constructor_.apply(this,arguments)}visit(t){for(var e=t[0].orig().getCoordinate(),r=t[1].orig().getCoordinate(),n=t[2].orig().getCoordinate(),i=_e.circumcentre(e,r,n),o=new sa(i),a=0;a<3;a++)t[a].rot().setOrig(o)}getClass(){return ya}get interfaces_(){return[da]}}ya.constructor_=function(){};class ma{constructor(){ma.constructor_.apply(this,arguments)}getTriangleEdges(){return this._triList}visit(t){this._triList.add(t)}getClass(){return ma}get interfaces_(){return[da]}}ma.constructor_=function(){this._triList=new C};class _a{constructor(){_a.constructor_.apply(this,arguments)}visit(t){this._triList.add([t[0].orig(),t[1].orig(),t[2].orig()])}getTriangleVertices(){return this._triList}getClass(){return _a}get interfaces_(){return[da]}}_a.constructor_=function(){this._triList=new C};class va{constructor(){va.constructor_.apply(this,arguments)}checkTriangleSize(t){t.length>=2?he.toLineString(t[0],t[1]):t.length>=1&&he.toPoint(t[0])}visit(t){this._coordList.clear();for(var e=0;e<3;e++){var r=t[e].orig();this._coordList.add(r.getCoordinate())}if(this._coordList.size()>0){this._coordList.closeRing();var n=this._coordList.toCoordinateArray();if(4!==n.length)return null;this._triCoords.add(n)}}getTriangles(){return this._triCoords}getClass(){return va}get interfaces_(){return[da]}}va.constructor_=function(){this._coordList=new P,this._triCoords=new C},ga.TriangleCircumcentreVisitor=ya,ga.TriangleEdgesListVisitor=ma,ga.TriangleVertexListVisitor=_a,ga.TriangleCoordinatesVisitor=va,ga.constructor_=function(){this._visitedKey=0,this._quadEdges=new C,this._startingEdge=null,this._tolerance=null,this._edgeCoincidenceTolerance=null,this._frameVertex=new Array(3).fill(null),this._frameEnv=null,this._locator=null,this._seg=new de,this._triEdges=new Array(3).fill(null);let t=arguments[0],e=arguments[1];this._tolerance=e,this._edgeCoincidenceTolerance=e/ga.EDGE_COINCIDENCE_TOL_FACTOR,this.createFrame(t),this._startingEdge=this.initSubdiv(),this._locator=new fa(this)},ga.EDGE_COINCIDENCE_TOL_FACTOR=1e3;class ba{constructor(){ba.constructor_.apply(this,arguments)}getLineSegment(){return this._ls}getEndZ(){return this._ls.getCoordinate(1).z}getStartZ(){return this._ls.getCoordinate(0).z}intersection(t){return this._ls.intersection(t.getLineSegment())}getStart(){return this._ls.getCoordinate(0)}getEnd(){return this._ls.getCoordinate(1)}getEndY(){return this._ls.getCoordinate(1).y}getStartX(){return this._ls.getCoordinate(0).x}equalsTopo(t){return this._ls.equalsTopo(t.getLineSegment())}getStartY(){return this._ls.getCoordinate(0).y}setData(t){this._data=t}getData(){return this._data}getEndX(){return this._ls.getCoordinate(1).x}toString(){return this._ls.toString()}getClass(){return ba}get interfaces_(){return[]}}ba.constructor_=function(){if(this._ls=null,this._data=null,2===arguments.length){let t=arguments[0],e=arguments[1];this._ls=new de(t,e)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];this._ls=new de(t,e),this._data=r}else if(6===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2],n=arguments[3],i=arguments[4],o=arguments[5];ba.constructor_.call(this,new _(t,e,r),new _(n,i,o))}else if(7===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2],n=arguments[3],i=arguments[4],o=arguments[5],a=arguments[6];ba.constructor_.call(this,new _(t,e,r),new _(n,i,o),a)}};class xa{constructor(){xa.constructor_.apply(this,arguments)}static computeVertexEnvelope(t){for(var e=new R,r=t.iterator();r.hasNext();){var n=r.next();e.expandToInclude(n.getCoordinate())}return e}getInitialVertices(){return this._initialVertices}getKDT(){return this._kdt}enforceConstraints(){this.addConstraintVertices();var t=0,e=0;do{e=this.enforceGabriel(this._segments),t++}while(e>0&&t=1)return e;var n=(e.x-t.x)*r+t.x,i=(e.y-t.y)*r+t.y,o=(e.z-t.z)*r+t.z;return new _(n,i,o)}static compareLocationValues(t,e,r,n,i,o){return tn?1:ei?1:ro?1:0}getSegmentIndex(){return this._segmentIndex}getComponentIndex(){return this._componentIndex}isEndpoint(t){var e=t.getGeometryN(this._componentIndex).getNumPoints()-1;return this._segmentIndex>=e||this._segmentIndex===e&&this._segmentFraction>=1}isValid(t){if(this._componentIndex<0||this._componentIndex>=t.getNumGeometries())return!1;var e=t.getGeometryN(this._componentIndex);return!(this._segmentIndex<0||this._segmentIndex>e.getNumPoints()||this._segmentIndex===e.getNumPoints()&&0!==this._segmentFraction||this._segmentFraction<0||this._segmentFraction>1)}normalize(){this._segmentFraction<0&&(this._segmentFraction=0),this._segmentFraction>1&&(this._segmentFraction=1),this._componentIndex<0&&(this._componentIndex=0,this._segmentIndex=0,this._segmentFraction=0),this._segmentIndex<0&&(this._segmentIndex=0,this._segmentFraction=0),1===this._segmentFraction&&(this._segmentFraction=0,this._segmentIndex+=1)}toLowest(t){var e=t.getGeometryN(this._componentIndex).getNumPoints()-1;return this._segmentIndex=e.getNumPoints()-1)return r;var n=e.getCoordinateN(this._segmentIndex+1);return Ca.pointAlongSegmentByFraction(r,n,this._segmentFraction)}getSegmentFraction(){return this._segmentFraction}getSegment(t){var e=t.getGeometryN(this._componentIndex),r=e.getCoordinateN(this._segmentIndex);if(this._segmentIndex>=e.getNumPoints()-1){var n=e.getCoordinateN(e.getNumPoints()-2);return new de(n,r)}var i=e.getCoordinateN(this._segmentIndex+1);return new de(r,i)}clamp(t){if(this._componentIndex>=t.getNumGeometries())return this.setToEnd(t),null;if(this._segmentIndex>=t.getNumPoints()){var e=t.getGeometryN(this._componentIndex);this._segmentIndex=e.getNumPoints()-1,this._segmentFraction=1}}setToEnd(t){this._componentIndex=t.getNumGeometries()-1;var e=t.getGeometryN(this._componentIndex);this._segmentIndex=e.getNumPoints()-1,this._segmentFraction=1}compareTo(t){var e=t;return this._componentIndexe._componentIndex?1:this._segmentIndexe._segmentIndex?1:this._segmentFractione._segmentFraction?1:0}copy(){return new Ca(this._componentIndex,this._segmentIndex,this._segmentFraction)}toString(){return"LinearLoc["+this._componentIndex+", "+this._segmentIndex+", "+this._segmentFraction+"]"}isOnSameSegment(t){return this._componentIndex===t._componentIndex&&(this._segmentIndex===t._segmentIndex||t._segmentIndex-this._segmentIndex==1&&0===t._segmentFraction||this._segmentIndex-t._segmentIndex==1&&0===this._segmentFraction)}snapToVertex(t,e){if(this._segmentFraction<=0||this._segmentFraction>=1)return null;var r=this.getSegmentLength(t),n=this._segmentFraction*r,i=r-n;n<=i&&nt?1:this._segmentIndexe?1:this._segmentFractionr?1:0}getSegmentLength(t){var e=t.getGeometryN(this._componentIndex),r=this._segmentIndex;this._segmentIndex>=e.getNumPoints()-1&&(r=e.getNumPoints()-2);var n=e.getCoordinateN(r),i=e.getCoordinateN(r+1);return n.distance(i)}isVertex(){return this._segmentFraction<=0||this._segmentFraction>=1}getClass(){return Ca}get interfaces_(){return[h]}}Ca.constructor_=function(){if(this._componentIndex=0,this._segmentIndex=0,this._segmentFraction=0,0===arguments.length);else if(1===arguments.length){let t=arguments[0];this._componentIndex=t._componentIndex,this._segmentIndex=t._segmentIndex,this._segmentFraction=t._segmentFraction}else if(2===arguments.length){let t=arguments[0],e=arguments[1];Ca.constructor_.call(this,0,t,e)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];this._componentIndex=t,this._segmentIndex=e,this._segmentFraction=r,this.normalize()}else if(4===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2],n=arguments[3];this._componentIndex=t,this._segmentIndex=e,this._segmentFraction=r,n&&this.normalize()}};class Ta{constructor(){Ta.constructor_.apply(this,arguments)}static segmentEndVertexIndex(t){return t.getSegmentFraction()>0?t.getSegmentIndex()+1:t.getSegmentIndex()}getComponentIndex(){return this._componentIndex}getLine(){return this._currentLine}getVertexIndex(){return this._vertexIndex}getSegmentEnd(){return this._vertexIndex=this._currentLine.getNumPoints()&&(this._componentIndex++,this.loadCurrentLine(),this._vertexIndex=0)}loadCurrentLine(){if(this._componentIndex>=this._numLines)return this._currentLine=null,null;this._currentLine=this._linearGeom.getGeometryN(this._componentIndex)}getSegmentStart(){return this._currentLine.getCoordinateN(this._vertexIndex)}isEndOfLine(){return!(this._componentIndex>=this._numLines||this._vertexIndex=this._numLines||this._componentIndex===this._numLines-1&&this._vertexIndex>=this._currentLine.getNumPoints())}getClass(){return Ta}get interfaces_(){return[]}}Ta.constructor_=function(){if(this._linearGeom=null,this._numLines=null,this._currentLine=null,this._componentIndex=0,this._vertexIndex=0,1===arguments.length){let t=arguments[0];Ta.constructor_.call(this,t,0,0)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];Ta.constructor_.call(this,t,e.getComponentIndex(),Ta.segmentEndVertexIndex(e))}else if(3===arguments.length){let t=arguments[0],e=arguments[1],n=arguments[2];if(!b(t,dt))throw new r("Lineal geometry is required");this._linearGeom=t,this._numLines=t.getNumGeometries(),this._componentIndex=e,this._vertexIndex=n,this.loadCurrentLine()}};class Pa{constructor(){Pa.constructor_.apply(this,arguments)}static indexOf(t,e){return new Pa(t).indexOf(e)}static indexOfAfter(t,e,r){return new Pa(t).indexOfAfter(e,r)}indexOf(t){return this.indexOfFromStart(t,null)}indexOfFromStart(t,e){for(var r=i.MAX_VALUE,n=0,o=0,a=-1,s=new de,l=new Ta(this._linearGeom);l.hasNext();l.next())if(!l.isEndOfLine()){s.p0=l.getSegmentStart(),s.p1=l.getSegmentEnd();var u=s.distance(t),c=s.segmentFraction(t),h=l.getComponentIndex(),f=l.getVertexIndex();u=0,"computed location is before specified minimum location"),n}getClass(){return Pa}get interfaces_(){return[]}}Pa.constructor_=function(){this._linearGeom=null;let t=arguments[0];this._linearGeom=t};class Ra{constructor(){Ra.constructor_.apply(this,arguments)}static indicesOf(t,e){return new Ra(t).indicesOf(e)}indicesOf(t){var e=t.getGeometryN(0).getCoordinateN(0),r=t.getGeometryN(t.getNumGeometries()-1),n=r.getCoordinateN(r.getNumPoints()-1),i=new Pa(this._linearGeom),o=new Array(2).fill(null);return o[0]=i.indexOf(e),0===t.getLength()?o[1]=o[0].copy():o[1]=i.indexOfAfter(n,o[0]),o}getClass(){return Ra}get interfaces_(){return[]}}Ra.constructor_=function(){this._linearGeom=null;let t=arguments[0];this._linearGeom=t};class La{constructor(){La.constructor_.apply(this,arguments)}getGeometry(){return this.endLine(),this._geomFact.buildGeometry(this._lines)}getLastCoordinate(){return this._lastPt}endLine(){if(null===this._coordList)return null;if(this._ignoreInvalidLines&&this._coordList.size()<2)return this._coordList=null,null;var t=this._coordList.toCoordinateArray(),e=t;this._fixInvalidLines&&(e=this.validCoordinateSequence(t)),this._coordList=null;var n=null;try{n=this._geomFact.createLineString(e)}catch(t){if(!(t instanceof r))throw t;if(!this._ignoreInvalidLines)throw t}null!==n&&this._lines.add(n)}setFixInvalidLines(t){this._fixInvalidLines=t}add(){if(1===arguments.length){let t=arguments[0];this.add(t,!0)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];null===this._coordList&&(this._coordList=new P),this._coordList.add(t,e),this._lastPt=t}}setIgnoreInvalidLines(t){this._ignoreInvalidLines=t}validCoordinateSequence(t){return t.length>=2?t:[t[0],t[0]]}getClass(){return La}get interfaces_(){return[]}}La.constructor_=function(){this._geomFact=null,this._lines=new C,this._coordList=null,this._ignoreInvalidLines=!1,this._fixInvalidLines=!1,this._lastPt=null;let t=arguments[0];this._geomFact=t};class Ma{constructor(){Ma.constructor_.apply(this,arguments)}static extract(t,e,r){return new Ma(t).extract(e,r)}computeLinear(t,e){var r=new La(this._line.getFactory());r.setFixInvalidLines(!0),t.isVertex()||r.add(t.getCoordinate(this._line));for(var n=new Ta(this._line,t);n.hasNext()&&!(e.compareLocationValues(n.getComponentIndex(),n.getVertexIndex(),0)<0);n.next()){var i=n.getSegmentStart();r.add(i),n.isEndOfLine()&&r.endLine()}return e.isVertex()||r.add(e.getCoordinate(this._line)),r.getGeometry()}computeLine(t,e){var r=this._line.getCoordinates(),n=new P,i=t.getSegmentIndex();t.getSegmentFraction()>0&&(i+=1);var o=e.getSegmentIndex();1===e.getSegmentFraction()&&(o+=1),o>=r.length&&(o=r.length-1),t.isVertex()||n.add(t.getCoordinate(this._line));for(var a=i;a<=o;a++)n.add(r[a]);e.isVertex()||n.add(e.getCoordinate(this._line)),n.size()<=0&&n.add(t.getCoordinate(this._line));var s=n.toCoordinateArray();return s.length<=1&&(s=[s[0],s[0]]),this._line.getFactory().createLineString(s)}extract(t,e){return e.compareTo(t)<0?this.reverse(this.computeLinear(e,t)):this.computeLinear(t,e)}reverse(t){return t instanceof jt||t instanceof Ot?t.reverse():(m.shouldNeverReachHere("non-linear geometry encountered"),null)}getClass(){return Ma}get interfaces_(){return[]}}Ma.constructor_=function(){this._line=null;let t=arguments[0];this._line=t};class Na{constructor(){Na.constructor_.apply(this,arguments)}clampIndex(t){var e=t.copy();return e.clamp(this._linearGeom),e}project(t){return Pa.indexOf(this._linearGeom,t)}checkGeometryType(){if(!(this._linearGeom instanceof jt||this._linearGeom instanceof Ot))throw new r("Input geometry must be linear")}extractPoint(){if(1===arguments.length)return arguments[0].getCoordinate(this._linearGeom);if(2===arguments.length){let e=arguments[1];var t=arguments[0].toLowest(this._linearGeom);return t.getSegment(this._linearGeom).pointAlongOffset(t.getSegmentFraction(),e)}}isValidIndex(t){return t.isValid(this._linearGeom)}getEndIndex(){return Ca.getEndLocation(this._linearGeom)}getStartIndex(){return new Ca}indexOfAfter(t,e){return Pa.indexOfAfter(this._linearGeom,t,e)}extractLine(t,e){return Ma.extract(this._linearGeom,t,e)}indexOf(t){return Pa.indexOf(this._linearGeom,t)}indicesOf(t){return Ra.indicesOf(this._linearGeom,t)}getClass(){return Na}get interfaces_(){return[]}}Na.constructor_=function(){this._linearGeom=null;let t=arguments[0];this._linearGeom=t,this.checkGeometryType()};class Aa{constructor(){Aa.constructor_.apply(this,arguments)}static indexOf(t,e){return new Aa(t).indexOf(e)}static indexOfAfter(t,e,r){return new Aa(t).indexOfAfter(e,r)}indexOf(t){return this.indexOfFromStart(t,-1)}indexOfFromStart(t,e){for(var r=i.MAX_VALUE,n=e,o=0,a=new de,s=new Ta(this._linearGeom);s.hasNext();){if(!s.isEndOfLine()){a.p0=s.getSegmentStart(),a.p1=s.getSegmentEnd();var l=a.distance(t),u=this.segmentNearestMeasure(a,t,o);le&&(n=u,r=l),o+=a.getLength()}s.next()}return n}indexOfAfter(t,e){if(e<0)return this.indexOf(t);var r=this._linearGeom.getLength();if(r=e,"computed index is before specified minimum index"),n}segmentNearestMeasure(t,e,r){var n=t.projectionFactor(e);return n<=0?r:n<=1?r+n*t.getLength():r+t.getLength()}getClass(){return Aa}get interfaces_(){return[]}}Aa.constructor_=function(){this._linearGeom=null;let t=arguments[0];this._linearGeom=t};class ka{constructor(){ka.constructor_.apply(this,arguments)}static getLength(t,e){return new ka(t).getLength(e)}static getLocation(){if(2===arguments.length){let t=arguments[1];return new ka(arguments[0]).getLocation(t)}if(3===arguments.length){let t=arguments[1],e=arguments[2];return new ka(arguments[0]).getLocation(t,e)}}getLength(t){for(var e=0,r=new Ta(this._linearGeom);r.hasNext();){if(!r.isEndOfLine()){var n=r.getSegmentStart(),i=r.getSegmentEnd().distance(n);if(t.getComponentIndex()===r.getComponentIndex()&&t.getSegmentIndex()===r.getVertexIndex())return e+i*t.getSegmentFraction();e+=i}r.next()}return e}resolveHigher(t){if(!t.isEndpoint(this._linearGeom))return t;var e=t.getComponentIndex();if(e>=this._linearGeom.getNumGeometries()-1)return t;do{e++}while(et){var s=(t-e)/a;return n=r.getComponentIndex(),i=r.getVertexIndex(),new Ca(n,i,s)}e+=a}r.next()}return Ca.getEndLocation(this._linearGeom)}getClass(){return ka}get interfaces_(){return[]}}ka.constructor_=function(){this._linearGeom=null;let t=arguments[0];this._linearGeom=t};class ja{constructor(){ja.constructor_.apply(this,arguments)}clampIndex(t){var e=this.positiveIndex(t),r=this.getStartIndex();if(en?n:e}locationOf(){if(1===arguments.length){let t=arguments[0];return ka.getLocation(this._linearGeom,t)}if(2===arguments.length){let t=arguments[0],e=arguments[1];return ka.getLocation(this._linearGeom,t,e)}}project(t){return Aa.indexOf(this._linearGeom,t)}positiveIndex(t){return t>=0?t:this._linearGeom.getLength()+t}extractPoint(){if(1===arguments.length){let t=arguments[0];return ka.getLocation(this._linearGeom,t).getCoordinate(this._linearGeom)}if(2===arguments.length){let e=arguments[0],r=arguments[1];var t=ka.getLocation(this._linearGeom,e).toLowest(this._linearGeom);return t.getSegment(this._linearGeom).pointAlongOffset(t.getSegmentFraction(),r)}}isValidIndex(t){return t>=this.getStartIndex()&&t<=this.getEndIndex()}getEndIndex(){return this._linearGeom.getLength()}getStartIndex(){return 0}indexOfAfter(t,e){return Aa.indexOfAfter(this._linearGeom,t,e)}extractLine(t,e){new Na(this._linearGeom);var r=this.clampIndex(t),n=this.clampIndex(e),i=r===n,o=this.locationOf(r,i),a=this.locationOf(n);return Ma.extract(this._linearGeom,o,a)}indexOf(t){return Aa.indexOf(this._linearGeom,t)}indicesOf(t){var e=Ra.indicesOf(this._linearGeom,t);return[ka.getLength(this._linearGeom,e[0]),ka.getLength(this._linearGeom,e[1])]}getClass(){return ja}get interfaces_(){return[]}}ja.constructor_=function(){this._linearGeom=null;let t=arguments[0];this._linearGeom=t};var Fa=Object.freeze({LengthIndexedLine:ja,LengthLocationMap:ka,LinearGeometryBuilder:La,LinearIterator:Ta,LinearLocation:Ca,LocationIndexedLine:Na});class Da{get interfaces_(){return[]}getClass(){return Da}static union(t,e){if(t.isEmpty()||e.isEmpty()){if(t.isEmpty()&&e.isEmpty())return eo.createEmptyResult(eo.UNION,t,e,t.getFactory());if(t.isEmpty())return e.copy();if(e.isEmpty())return t.copy()}return t.checkNotGeometryCollection(t),t.checkNotGeometryCollection(e),Qi.overlayOp(t,e,eo.UNION)}}W.prototype.equalsTopo=function(t){return!!this.getEnvelopeInternal().equals(t.getEnvelopeInternal())&&So.relate(this,t).isEquals(this.getDimension(),t.getDimension())},W.prototype.union=function(){if(0===arguments.length)return Lo.union(this);if(1===arguments.length){let t=arguments[0];return Da.union(this,t)}},W.prototype.isValid=function(){return Do.isValid(this)},W.prototype.intersection=function(t){if(this.isEmpty()||t.isEmpty())return eo.createEmptyResult(eo.INTERSECTION,this,t,this._factory);if(this.isGeometryCollection()){var e=t;return zi.map(this,{interfaces_:[MapOp],map:function(t){return t.intersection(e)}})}return this.checkNotGeometryCollection(this),this.checkNotGeometryCollection(t),Qi.overlayOp(this,t,eo.INTERSECTION)},W.prototype.covers=function(t){return So.covers(this,t)},W.prototype.coveredBy=function(t){return So.covers(t,this)},W.prototype.touches=function(t){return So.touches(this,t)},W.prototype.intersects=function(t){return So.intersects(this,t)},W.prototype.within=function(t){return So.contains(t,this)},W.prototype.overlaps=function(t){return So.overlaps(this,t)},W.prototype.disjoint=function(t){return So.disjoint(this,t)},W.prototype.crosses=function(t){return So.crosses(this,t)},W.prototype.buffer=function(){if(1===arguments.length){let t=arguments[0];return mi.bufferOp(this,t)}if(2===arguments.length){let t=arguments[0],e=arguments[1];return mi.bufferOp(this,t,e)}if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];return mi.bufferOp(this,t,e,r)}},W.prototype.convexHull=function(){return new Qe(this).getConvexHull()},W.prototype.relate=function(...t){if(1===arguments.length){let t=arguments[0];return So.relate(this,t)}if(2===arguments.length){let t=arguments[0],e=arguments[1];return So.relate(this,t).matches(e)}},W.prototype.getCentroid=function(){if(this.isEmpty())return this._factory.createPoint();var t=Ze.getCentroid(this);return this.createPointFromInternalCoord(t,this)},W.prototype.getInteriorPoint=function(){if(this.isEmpty())return this._factory.createPoint();var t=null,e=this.getDimension();return t=0===e?new ir(this).getInteriorPoint():1===e?new nr(this).getInteriorPoint():new er(this).getInteriorPoint(),this.createPointFromInternalCoord(t,this)},W.prototype.symDifference=function(t){if(this.isEmpty()||t.isEmpty()){if(this.isEmpty()&&t.isEmpty())return eo.createEmptyResult(eo.SYMDIFFERENCE,this,t,this._factory);if(this.isEmpty())return t.copy();if(t.isEmpty())return this.copy()}return this.checkNotGeometryCollection(this),this.checkNotGeometryCollection(t),Qi.overlayOp(this,t,eo.SYMDIFFERENCE)},W.prototype.createPointFromInternalCoord=function(t,e){return e.getPrecisionModel().makePrecise(t),e.getFactory().createPoint(t)},W.prototype.toText=function(){return(new he).write(this)},W.prototype.toString=function(){this.toText()},W.prototype.contains=function(t){return So.contains(this,t)},W.prototype.difference=function(t){return this.isEmpty()?eo.createEmptyResult(eo.DIFFERENCE,this,t,this._factory):t.isEmpty()?this.copy():(this.checkNotGeometryCollection(this),this.checkNotGeometryCollection(t),Qi.overlayOp(this,t,eo.DIFFERENCE))},W.prototype.isSimple=function(){return new Gn(this).isSimple()},W.prototype.isWithinDistance=function(t,e){return!(this.getEnvelopeInternal().distance(t.getEnvelopeInternal())>e)&&Ei.isWithinDistance(this,t,e)},W.prototype.distance=function(t){return Ei.distance(this,t)},W.prototype.isEquivalentClass=function(t){return this.getClass()===t.getClass()},t.version="2.0.2 (f363091)",t.algorithm=sr,t.densify=hr,t.dissolve=vr,t.geom=ve,t.geomgraph=qr,t.index=yn,t.io=wn,t.noding=Dn,t.operation=Uo,t.precision=Vo,t.simplify=ra,t.triangulate=Ia,t.linearref=Fa,Object.defineProperty(t,"__esModule",{value:!0})}(e)},function(t,e,r){"use strict";r.r(e);var n={};r.r(n),r.d(n,"TOP",(function(){return Lg})),r.d(n,"MIDDLE",(function(){return Mg})),r.d(n,"BOTTOM",(function(){return Ng})),r.d(n,"ALPHABETIC",(function(){return Ag})),r.d(n,"HANGING",(function(){return kg})),r.d(n,"IDEOGRAPHIC",(function(){return jg}));var i={};r.r(i),r.d(i,"LEFT",(function(){return Fg})),r.d(i,"CENTER",(function(){return Dg})),r.d(i,"RIGHT",(function(){return Gg})),r.d(i,"JUSTIFY",(function(){return Ug}));var o={};r.r(o),r.d(o,"show",(function(){return Dx})),r.d(o,"info",(function(){return Gx})),r.d(o,"error",(function(){return Ux})),r.d(o,"success",(function(){return Bx}));var a={};r.r(a),r.d(a,"POINT",(function(){return pA})),r.d(a,"LINE",(function(){return dA})),r.d(a,"POLYGON",(function(){return gA})),r.d(a,"MPOINT",(function(){return yA})),r.d(a,"MLINE",(function(){return mA})),r.d(a,"MPOLYGON",(function(){return _A}));var s=r(35),l=r.n(s),u=r(1),c=function(t,e,r){var n=Object(u.o)(e),i=Object(u.o)(r);return Object(u.z)(t,n,i)},h=r(6),f="http://www.w3.org/2001/XMLSchema-instance";function p(t,e){return j().createElementNS(t,e)}function d(t,e){return g(t,e,[]).join("")}function g(t,e,r){if(t.nodeType==Node.CDATA_SECTION_NODE||t.nodeType==Node.TEXT_NODE)e?r.push(String(t.nodeValue).replace(/(\r\n|\r|\n)/g,"")):r.push(t.nodeValue);else{var n=void 0;for(n=t.firstChild;n;n=n.nextSibling)g(n,e,r)}return r}function y(t){return"documentElement"in t}function m(t){return(new DOMParser).parseFromString(t,"application/xml")}function _(t,e){return function(r,n){var i=t.call(void 0!==e?e:this,r,n);if(void 0!==i){var o=n[n.length-1];Object(h.c)(o,i)}}}function v(t,e){return function(r,n){var i=t.call(void 0!==e?e:this,r,n);void 0!==i&&n[n.length-1].push(i)}}function b(t,e){return function(r,n){var i=t.call(void 0!==e?e:this,r,n);void 0!==i&&(n[n.length-1]=i)}}function x(t,e,r){return function(n,i){var o=t.call(void 0!==r?r:this,n,i);if(void 0!==o){var a=i[i.length-1],s=void 0!==e?e:n.localName,l=void 0;s in a?l=a[s]:(l=[],a[s]=l),l.push(o)}}}function w(t,e,r){return function(n,i){var o=t.call(void 0!==r?r:this,n,i);void 0!==o&&(i[i.length-1][void 0!==e?e:n.localName]=o)}}function E(t,e){return function(r,n,i){t.call(void 0!==e?e:this,r,n,i),i[i.length-1].node.appendChild(r)}}function O(t,e){var r,n;return function(e,i,o){if(void 0===r){r={};var a={};a[e.localName]=t,r[e.namespaceURI]=a,n=S(e.localName)}L(r,n,i,o)}}function S(t,e){var r=t;return function(t,n,i){var o=n[n.length-1].node,a=r;return void 0===a&&(a=i),p(void 0!==e?e:o.namespaceURI,a)}}var I=S();function C(t,e){for(var r=e.length,n=new Array(r),i=0;i=this.text.length)return;t=this.text[this.place++]}switch(this.state){case 1:return this.neutral(t);case 2:return this.keyword(t);case 4:return this.quoted(t);case 5:return this.afterquote(t);case 3:return this.number(t);case-1:return}},ee.prototype.afterquote=function(t){if('"'===t)return this.word+='"',void(this.state=4);if(Qt.test(t))return this.word=this.word.trim(),void this.afterItem(t);throw new Error("havn't handled \""+t+'" in afterquote yet, index '+this.place)},ee.prototype.afterItem=function(t){return","===t?(null!==this.word&&this.currentObject.push(this.word),this.word=null,void(this.state=1)):"]"===t?(this.level--,null!==this.word&&(this.currentObject.push(this.word),this.word=null),this.state=1,this.currentObject=this.stack.pop(),void(this.currentObject||(this.state=-1))):void 0},ee.prototype.number=function(t){if(!te.test(t)){if(Qt.test(t))return this.word=parseFloat(this.word),void this.afterItem(t);throw new Error("havn't handled \""+t+'" in number yet, index '+this.place)}this.word+=t},ee.prototype.quoted=function(t){'"'!==t?this.word+=t:this.state=5},ee.prototype.keyword=function(t){if($t.test(t))this.word+=t;else{if("["===t){var e=[];return e.push(this.word),this.level++,null===this.root?this.root=e:this.currentObject.push(e),this.stack.push(this.currentObject),this.currentObject=e,void(this.state=1)}if(!Qt.test(t))throw new Error("havn't handled \""+t+'" in keyword yet, index '+this.place);this.afterItem(t)}},ee.prototype.neutral=function(t){if(Jt.test(t))return this.word=t,void(this.state=2);if('"'===t)return this.word="",void(this.state=4);if(te.test(t))return this.word=t,void(this.state=3);if(!Qt.test(t))throw new Error("havn't handled \""+t+'" in neutral yet, index '+this.place);this.afterItem(t)},ee.prototype.output=function(){for(;this.place0?90:-90),t.lat_ts=t.lat1)}(i),i};function ae(t){var e=this;if(2===arguments.length){var r=arguments[1];"string"==typeof r?"+"===r.charAt(0)?ae[t]=Ht(arguments[1]):ae[t]=oe(arguments[1]):ae[t]=r}else if(1===arguments.length){if(Array.isArray(t))return t.map((function(t){Array.isArray(t)?ae.apply(e,t):ae(t)}));if("string"==typeof t){if(t in ae)return ae[t]}else"EPSG"in t?ae["EPSG:"+t.EPSG]=t:"ESRI"in t?ae["ESRI:"+t.ESRI]=t:"IAU2000"in t?ae["IAU2000:"+t.IAU2000]=t:console.log(t);return}}!function(t){t("EPSG:4326","+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees"),t("EPSG:4269","+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees"),t("EPSG:3857","+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs"),t.WGS84=t["EPSG:4326"],t["EPSG:3785"]=t["EPSG:3857"],t.GOOGLE=t["EPSG:3857"],t["EPSG:900913"]=t["EPSG:3857"],t["EPSG:102113"]=t["EPSG:3857"]}(ae);var se=ae;var le=["PROJECTEDCRS","PROJCRS","GEOGCS","GEOCCS","PROJCS","LOCAL_CS","GEODCRS","GEODETICCRS","GEODETICDATUM","ENGCRS","ENGINEERINGCRS"];var ue=["3857","900913","3785","102113"];var ce=function(t){if(!function(t){return"string"==typeof t}(t))return t;if(function(t){return t in se}(t))return se[t];if(function(t){return le.some((function(e){return t.indexOf(e)>-1}))}(t)){var e=oe(t);if(function(t){var e=Xt(t,"authority");if(e){var r=Xt(e,"epsg");return r&&ue.indexOf(r)>-1}}(e))return se["EPSG:3857"];var r=function(t){var e=Xt(t,"extension");if(e)return Xt(e,"proj4")}(e);return r?Ht(r):e}return function(t){return"+"===t[0]}(t)?Ht(t):void 0},he=function(t,e){var r,n;if(t=t||{},!e)return t;for(n in e)void 0!==(r=e[n])&&(t[n]=r);return t},fe=function(t,e,r){var n=t*e;return r/Math.sqrt(1-n*n)},pe=function(t){return t<0?-1:1},de=function(t){return Math.abs(t)<=Vt?t:t-pe(t)*zt},ge=function(t,e,r){var n=t*r,i=.5*t;return n=Math.pow((1-n)/(1+n),i),Math.tan(.5*(Ft-e))/n},ye=function(t,e){for(var r,n,i=.5*t,o=Ft-2*Math.atan(e),a=0;a<=15;a++)if(r=t*Math.sin(o),o+=n=Ft-2*Math.atan(e*Math.pow((1-r)/(1+r),i))-o,Math.abs(n)<=1e-10)return o;return-9999};function me(t){return t}var _e=[{init:function(){var t=this.b/this.a;this.es=1-t*t,"x0"in this||(this.x0=0),"y0"in this||(this.y0=0),this.e=Math.sqrt(this.es),this.lat_ts?this.sphere?this.k0=Math.cos(this.lat_ts):this.k0=fe(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)):this.k0||(this.k?this.k0=this.k:this.k0=1)},forward:function(t){var e,r,n=t.x,i=t.y;if(i*Ut>90&&i*Ut<-90&&n*Ut>180&&n*Ut<-180)return null;if(Math.abs(Math.abs(i)-Ft)<=Dt)return null;if(this.sphere)e=this.x0+this.a*this.k0*de(n-this.long0),r=this.y0+this.a*this.k0*Math.log(Math.tan(Bt+.5*i));else{var o=Math.sin(i),a=ge(this.e,i,o);e=this.x0+this.a*this.k0*de(n-this.long0),r=this.y0-this.a*this.k0*Math.log(a)}return t.x=e,t.y=r,t},inverse:function(t){var e,r,n=t.x-this.x0,i=t.y-this.y0;if(this.sphere)r=Ft-2*Math.atan(Math.exp(-i/(this.a*this.k0)));else{var o=Math.exp(-i/(this.a*this.k0));if(-9999===(r=ye(this.e,o)))return null}return e=de(this.long0+n/(this.a*this.k0)),t.x=e,t.y=r,t},names:["Mercator","Popular Visualisation Pseudo Mercator","Mercator_1SP","Mercator_Auxiliary_Sphere","merc"]},{init:function(){},forward:me,inverse:me,names:["longlat","identity"]}],ve={},be=[];function xe(t,e){var r=be.length;return t.names?(be[r]=t,t.names.forEach((function(t){ve[t.toLowerCase()]=r})),this):(console.log(e),!0)}var we={start:function(){_e.forEach(xe)},add:xe,get:function(t){if(!t)return!1;var e=t.toLowerCase();return void 0!==ve[e]&&be[ve[e]]?be[ve[e]]:void 0}},Ee={MERIT:{a:6378137,rf:298.257,ellipseName:"MERIT 1983"},SGS85:{a:6378136,rf:298.257,ellipseName:"Soviet Geodetic System 85"},GRS80:{a:6378137,rf:298.257222101,ellipseName:"GRS 1980(IUGG, 1980)"},IAU76:{a:6378140,rf:298.257,ellipseName:"IAU 1976"},airy:{a:6377563.396,b:6356256.91,ellipseName:"Airy 1830"},APL4:{a:6378137,rf:298.25,ellipseName:"Appl. Physics. 1965"},NWL9D:{a:6378145,rf:298.25,ellipseName:"Naval Weapons Lab., 1965"},mod_airy:{a:6377340.189,b:6356034.446,ellipseName:"Modified Airy"},andrae:{a:6377104.43,rf:300,ellipseName:"Andrae 1876 (Den., Iclnd.)"},aust_SA:{a:6378160,rf:298.25,ellipseName:"Australian Natl & S. Amer. 1969"},GRS67:{a:6378160,rf:298.247167427,ellipseName:"GRS 67(IUGG 1967)"},bessel:{a:6377397.155,rf:299.1528128,ellipseName:"Bessel 1841"},bess_nam:{a:6377483.865,rf:299.1528128,ellipseName:"Bessel 1841 (Namibia)"},clrk66:{a:6378206.4,b:6356583.8,ellipseName:"Clarke 1866"},clrk80:{a:6378249.145,rf:293.4663,ellipseName:"Clarke 1880 mod."},clrk58:{a:6378293.645208759,rf:294.2606763692654,ellipseName:"Clarke 1858"},CPM:{a:6375738.7,rf:334.29,ellipseName:"Comm. des Poids et Mesures 1799"},delmbr:{a:6376428,rf:311.5,ellipseName:"Delambre 1810 (Belgium)"},engelis:{a:6378136.05,rf:298.2566,ellipseName:"Engelis 1985"},evrst30:{a:6377276.345,rf:300.8017,ellipseName:"Everest 1830"},evrst48:{a:6377304.063,rf:300.8017,ellipseName:"Everest 1948"},evrst56:{a:6377301.243,rf:300.8017,ellipseName:"Everest 1956"},evrst69:{a:6377295.664,rf:300.8017,ellipseName:"Everest 1969"},evrstSS:{a:6377298.556,rf:300.8017,ellipseName:"Everest (Sabah & Sarawak)"},fschr60:{a:6378166,rf:298.3,ellipseName:"Fischer (Mercury Datum) 1960"},fschr60m:{a:6378155,rf:298.3,ellipseName:"Fischer 1960"},fschr68:{a:6378150,rf:298.3,ellipseName:"Fischer 1968"},helmert:{a:6378200,rf:298.3,ellipseName:"Helmert 1906"},hough:{a:6378270,rf:297,ellipseName:"Hough"},intl:{a:6378388,rf:297,ellipseName:"International 1909 (Hayford)"},kaula:{a:6378163,rf:298.24,ellipseName:"Kaula 1961"},lerch:{a:6378139,rf:298.257,ellipseName:"Lerch 1979"},mprts:{a:6397300,rf:191,ellipseName:"Maupertius 1738"},new_intl:{a:6378157.5,b:6356772.2,ellipseName:"New International 1967"},plessis:{a:6376523,rf:6355863,ellipseName:"Plessis 1817 (France)"},krass:{a:6378245,rf:298.3,ellipseName:"Krassovsky, 1942"},SEasia:{a:6378155,b:6356773.3205,ellipseName:"Southeast Asia"},walbeck:{a:6376896,b:6355834.8467,ellipseName:"Walbeck"},WGS60:{a:6378165,rf:298.3,ellipseName:"WGS 60"},WGS66:{a:6378145,rf:298.25,ellipseName:"WGS 66"},WGS7:{a:6378135,rf:298.26,ellipseName:"WGS 72"}},Oe=Ee.WGS84={a:6378137,rf:298.257223563,ellipseName:"WGS 84"};Ee.sphere={a:6370997,b:6370997,ellipseName:"Normal Sphere (r=6370997)"};var Se={};Se.wgs84={towgs84:"0,0,0",ellipse:"WGS84",datumName:"WGS84"},Se.ch1903={towgs84:"674.374,15.056,405.346",ellipse:"bessel",datumName:"swiss"},Se.ggrs87={towgs84:"-199.87,74.79,246.62",ellipse:"GRS80",datumName:"Greek_Geodetic_Reference_System_1987"},Se.nad83={towgs84:"0,0,0",ellipse:"GRS80",datumName:"North_American_Datum_1983"},Se.nad27={nadgrids:"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat",ellipse:"clrk66",datumName:"North_American_Datum_1927"},Se.potsdam={towgs84:"606.0,23.0,413.0",ellipse:"bessel",datumName:"Potsdam Rauenberg 1950 DHDN"},Se.carthage={towgs84:"-263.0,6.0,431.0",ellipse:"clark80",datumName:"Carthage 1934 Tunisia"},Se.hermannskogel={towgs84:"653.0,-212.0,449.0",ellipse:"bessel",datumName:"Hermannskogel"},Se.osni52={towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"airy",datumName:"Irish National"},Se.ire65={towgs84:"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15",ellipse:"mod_airy",datumName:"Ireland 1965"},Se.rassadiran={towgs84:"-133.63,-157.5,-158.62",ellipse:"intl",datumName:"Rassadiran"},Se.nzgd49={towgs84:"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993",ellipse:"intl",datumName:"New Zealand Geodetic Datum 1949"},Se.osgb36={towgs84:"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894",ellipse:"airy",datumName:"Airy 1830"},Se.s_jtsk={towgs84:"589,76,480",ellipse:"bessel",datumName:"S-JTSK (Ferro)"},Se.beduaram={towgs84:"-106,-87,188",ellipse:"clrk80",datumName:"Beduaram"},Se.gunung_segara={towgs84:"-403,684,41",ellipse:"bessel",datumName:"Gunung Segara Jakarta"},Se.rnb72={towgs84:"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1",ellipse:"intl",datumName:"Reseau National Belge 1972"};var Ie=function(t,e,r,n,i,o){var a={};return a.datum_type=void 0===t||"none"===t?5:4,e&&(a.datum_params=e.map(parseFloat),0===a.datum_params[0]&&0===a.datum_params[1]&&0===a.datum_params[2]||(a.datum_type=1),a.datum_params.length>3&&(0===a.datum_params[3]&&0===a.datum_params[4]&&0===a.datum_params[5]&&0===a.datum_params[6]||(a.datum_type=2,a.datum_params[3]*=jt,a.datum_params[4]*=jt,a.datum_params[5]*=jt,a.datum_params[6]=a.datum_params[6]/1e6+1))),a.a=r,a.b=n,a.es=i,a.ep2=o,a};function Ce(t,e){if(!(this instanceof Ce))return new Ce(t);e=e||function(t){if(t)throw t};var r=ce(t);if("object"==typeof r){var n=Ce.projections.get(r.projName);if(n){if(r.datumCode&&"none"!==r.datumCode){var i=Xt(Se,r.datumCode);i&&(r.datum_params=i.towgs84?i.towgs84.split(","):null,r.ellps=i.ellipse,r.datumName=i.datumName?i.datumName:r.datumCode)}r.k0=r.k0||1,r.axis=r.axis||"enu",r.ellps=r.ellps||"wgs84";var o,a,s,l,u,c,h,f=function(t,e,r,n,i){if(!t){var o=Xt(Ee,n);o||(o=Oe),t=o.a,e=o.b,r=o.rf}return r&&!e&&(e=(1-1/r)*t),(0===r||Math.abs(t-e)5e-11)&&(1===t.datum_type?t.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]:2!==t.datum_type||t.datum_params[0]===e.datum_params[0]&&t.datum_params[1]===e.datum_params[1]&&t.datum_params[2]===e.datum_params[2]&&t.datum_params[3]===e.datum_params[3]&&t.datum_params[4]===e.datum_params[4]&&t.datum_params[5]===e.datum_params[5]&&t.datum_params[6]===e.datum_params[6])}(t,e)||5===t.datum_type||5===e.datum_type?r:t.es!==e.es||t.a!==e.a||Pe(t.datum_type)||Pe(e.datum_type)?(r=function(t,e,r){var n,i,o,a,s=t.x,l=t.y,u=t.z?t.z:0;if(l<-Ft&&l>-1.001*Ft)l=-Ft;else if(l>Ft&&l<1.001*Ft)l=Ft;else{if(l<-Ft)return{x:-1/0,y:-1/0,z:t.z};if(l>Ft)return{x:1/0,y:1/0,z:t.z}}return s>Math.PI&&(s-=2*Math.PI),i=Math.sin(l),a=Math.cos(l),o=i*i,{x:((n=r/Math.sqrt(1-e*o))+u)*a*Math.cos(s),y:(n+u)*a*Math.sin(s),z:(n*(1-e)+u)*i}}(r,t.es,t.a),Pe(t.datum_type)&&(r=function(t,e,r){if(1===e)return{x:t.x+r[0],y:t.y+r[1],z:t.z+r[2]};if(2===e){var n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],l=r[5],u=r[6];return{x:u*(t.x-l*t.y+s*t.z)+n,y:u*(l*t.x+t.y-a*t.z)+i,z:u*(-s*t.x+a*t.y+t.z)+o}}}(r,t.datum_type,t.datum_params)),Pe(e.datum_type)&&(r=function(t,e,r){if(1===e)return{x:t.x-r[0],y:t.y-r[1],z:t.z-r[2]};if(2===e){var n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],l=r[5],u=r[6],c=(t.x-n)/u,h=(t.y-i)/u,f=(t.z-o)/u;return{x:c+l*h-s*f,y:-l*c+h+a*f,z:s*c-a*h+f}}}(r,e.datum_type,e.datum_params)),function(t,e,r,n){var i,o,a,s,l,u,c,h,f,p,d,g,y,m,_,v=1e-12,b=t.x,x=t.y,w=t.z?t.z:0;if(i=Math.sqrt(b*b+x*x),o=Math.sqrt(b*b+x*x+w*w),i/r1e-24&&y<30);return{x:m,y:Math.atan(d/Math.abs(p)),z:_}}(r,e.es,e.a,e.b)):r},Le=function(t,e,r){var n,i,o,a=r.x,s=r.y,l=r.z||0,u={};for(o=0;o<3;o++)if(!e||2!==o||void 0!==r.z)switch(0===o?(n=a,i="x"):1===o?(n=s,i="y"):(n=l,i="z"),t.axis[o]){case"e":u[i]=n;break;case"w":u[i]=-n;break;case"n":u[i]=n;break;case"s":u[i]=-n;break;case"u":void 0!==r[i]&&(u.z=n);break;case"d":void 0!==r[i]&&(u.z=-n);break;default:return null}return u},Me=function(t){var e={x:t[0],y:t[1]};return t.length>2&&(e.z=t[2]),t.length>3&&(e.m=t[3]),e};function Ne(t){if("function"==typeof Number.isFinite){if(Number.isFinite(t))return;throw new TypeError("coordinates must be finite numbers")}if("number"!=typeof t||t!=t||!isFinite(t))throw new TypeError("coordinates must be finite numbers")}function Ae(t,e,r){var n;return Array.isArray(r)&&(r=Me(r)),function(t){Ne(t.x),Ne(t.y)}(r),t.datum&&e.datum&&function(t,e){return(1===t.datum.datum_type||2===t.datum.datum_type)&&"WGS84"!==e.datumCode||(1===e.datum.datum_type||2===e.datum.datum_type)&&"WGS84"!==t.datumCode}(t,e)&&(r=Ae(t,n=new Te("WGS84"),r),t=n),"enu"!==t.axis&&(r=Le(t,!1,r)),"longlat"===t.projName?r={x:r.x*Gt,y:r.y*Gt}:(t.to_meter&&(r={x:r.x*t.to_meter,y:r.y*t.to_meter}),r=t.inverse(r)),t.from_greenwich&&(r.x+=t.from_greenwich),r=Re(t.datum,e.datum,r),e.from_greenwich&&(r={x:r.x-e.from_greenwich,y:r.y}),"longlat"===e.projName?r={x:r.x*Ut,y:r.y*Ut}:(r=e.forward(r),e.to_meter&&(r={x:r.x/e.to_meter,y:r.y/e.to_meter})),"enu"!==e.axis?Le(e,!0,r):r}var ke=Te("WGS84");function je(t,e,r){var n,i,o;return Array.isArray(r)?(n=Ae(t,e,r),3===r.length?[n.x,n.y,n.z]:[n.x,n.y]):(i=Ae(t,e,r),2===(o=Object.keys(r)).length||o.forEach((function(t){"x"!==t&&"y"!==t&&(i[t]=r[t])})),i)}function Fe(t){return t instanceof Te?t:t.oProj?t.oProj:Te(t)}var De=function(t,e,r){t=Fe(t);var n,i=!1;return void 0===e?(e=t,t=ke,i=!0):(void 0!==e.x||Array.isArray(e))&&(r=e,e=t,t=ke,i=!0),e=Fe(e),r?je(t,e,r):(n={forward:function(r){return je(t,e,r)},inverse:function(r){return je(e,t,r)}},i&&(n.oProj=e),n)},Ge="AJSAJS",Ue="AFAFAF",Be=65,ze=73,Ve=79,qe=86,Ye=90,We={forward:Xe,inverse:function(t){var e=Je(tr(t.toUpperCase()));if(e.lat&&e.lon)return[e.lon,e.lat,e.lon,e.lat];return[e.left,e.bottom,e.right,e.top]},toPoint:He};function Xe(t,e){return e=e||5,function(t,e){var r="00000"+t.easting,n="00000"+t.northing;return t.zoneNumber+t.zoneLetter+(p=t.easting,d=t.northing,g=t.zoneNumber,y=Qe(g),m=Math.floor(p/1e5),_=Math.floor(d/1e5)%20,i=m,o=_,a=y,s=a-1,l=Ge.charCodeAt(s),u=Ue.charCodeAt(s),c=l+i-1,h=u+o,f=!1,c>Ye&&(c=c-Ye+Be-1,f=!0),(c===ze||lze||(c>ze||lVe||(c>Ve||lYe&&(c=c-Ye+Be-1),h>qe?(h=h-qe+Be-1,f=!0):f=!1,(h===ze||uze||(h>ze||uVe||(h>Ve||uqe&&(h=h-qe+Be-1),String.fromCharCode(c)+String.fromCharCode(h))+r.substr(r.length-5,e)+n.substr(n.length-5,e);var i,o,a,s,l,u,c,h,f;var p,d,g,y,m,_}(function(t){var e,r,n,i,o,a,s,l,u=t.lat,c=t.lon,h=6378137,f=.00669438,p=.9996,d=Ze(u),g=Ze(c);l=Math.floor((c+180)/6)+1,180===c&&(l=60);u>=56&&u<64&&c>=3&&c<12&&(l=32);u>=72&&u<84&&(c>=0&&c<9?l=31:c>=9&&c<21?l=33:c>=21&&c<33?l=35:c>=33&&c<42&&(l=37));s=Ze(6*(l-1)-180+3),e=f/(1-f),r=h/Math.sqrt(1-f*Math.sin(d)*Math.sin(d)),n=Math.tan(d)*Math.tan(d),i=e*Math.cos(d)*Math.cos(d),o=Math.cos(d)*(g-s),a=h*((1-f/4-3*f*f/64-5*f*f*f/256)*d-(3*f/8+3*f*f/32+45*f*f*f/1024)*Math.sin(2*d)+(15*f*f/256+45*f*f*f/1024)*Math.sin(4*d)-35*f*f*f/3072*Math.sin(6*d));var y=p*r*(o+(1-n+i)*o*o*o/6+(5-18*n+n*n+72*i-58*e)*o*o*o*o*o/120)+5e5,m=p*(a+r*Math.tan(d)*(o*o/2+(5-n+9*i+4*i*i)*o*o*o*o/24+(61-58*n+n*n+600*i-330*e)*o*o*o*o*o*o/720));u<0&&(m+=1e7);return{northing:Math.round(m),easting:Math.round(y),zoneNumber:l,zoneLetter:$e(u)}}({lat:t[1],lon:t[0]}),e)}function He(t){var e=Je(tr(t.toUpperCase()));return e.lat&&e.lon?[e.lon,e.lat]:[(e.left+e.right)/2,(e.top+e.bottom)/2]}function Ze(t){return t*(Math.PI/180)}function Ke(t){return t/Math.PI*180}function Je(t){var e=t.northing,r=t.easting,n=t.zoneLetter,i=t.zoneNumber;if(i<0||i>60)return null;var o,a,s,l,u,c,h,f,p,d=.9996,g=6378137,y=.00669438,m=(1-Math.sqrt(.99330562))/(1+Math.sqrt(.99330562)),_=r-5e5,v=e;n<"N"&&(v-=1e7),h=6*(i-1)-180+3,o=.006739496752268451,p=(f=v/d/6367449.145945056)+(3*m/2-27*m*m*m/32)*Math.sin(2*f)+(21*m*m/16-55*m*m*m*m/32)*Math.sin(4*f)+151*m*m*m/96*Math.sin(6*f),a=g/Math.sqrt(1-y*Math.sin(p)*Math.sin(p)),s=Math.tan(p)*Math.tan(p),l=o*Math.cos(p)*Math.cos(p),u=.99330562*g/Math.pow(1-y*Math.sin(p)*Math.sin(p),1.5),c=_/(a*d);var b=p-a*Math.tan(p)/u*(c*c/2-(5+3*s+10*l-4*l*l-9*o)*c*c*c*c/24+(61+90*s+298*l+45*s*s-1.6983531815716497-3*l*l)*c*c*c*c*c*c/720);b=Ke(b);var x,w=(c-(1+2*s+l)*c*c*c/6+(5-2*l+28*s-3*l*l+8*o+24*s*s)*c*c*c*c*c/120)/Math.cos(p);if(w=h+Ke(w),t.accuracy){var E=Je({northing:t.northing+t.accuracy,easting:t.easting+t.accuracy,zoneLetter:t.zoneLetter,zoneNumber:t.zoneNumber});x={top:E.lat,right:E.lon,bottom:b,left:w}}else x={lat:b,lon:w};return x}function $e(t){var e="Z";return 84>=t&&t>=72?e="X":72>t&&t>=64?e="W":64>t&&t>=56?e="V":56>t&&t>=48?e="U":48>t&&t>=40?e="T":40>t&&t>=32?e="S":32>t&&t>=24?e="R":24>t&&t>=16?e="Q":16>t&&t>=8?e="P":8>t&&t>=0?e="N":0>t&&t>=-8?e="M":-8>t&&t>=-16?e="L":-16>t&&t>=-24?e="K":-24>t&&t>=-32?e="J":-32>t&&t>=-40?e="H":-40>t&&t>=-48?e="G":-48>t&&t>=-56?e="F":-56>t&&t>=-64?e="E":-64>t&&t>=-72?e="D":-72>t&&t>=-80&&(e="C"),e}function Qe(t){var e=t%6;return 0===e&&(e=6),e}function tr(t){if(t&&0===t.length)throw"MGRSPoint coverting from nothing";for(var e,r=t.length,n=null,i="",o=0;!/[A-Z]/.test(e=t.charAt(o));){if(o>=2)throw"MGRSPoint bad conversion from: "+t;i+=e,o++}var a=parseInt(i,10);if(0===o||o+3>r)throw"MGRSPoint bad conversion from: "+t;var s=t.charAt(o++);if(s<="A"||"B"===s||"Y"===s||s>="Z"||"I"===s||"O"===s)throw"MGRSPoint zone letter "+s+" not handled: "+t;n=t.substring(o,o+=2);for(var l=Qe(a),u=function(t,e){var r=Ge.charCodeAt(e-1),n=1e5,i=!1;for(;r!==t.charCodeAt(0);){if(++r===ze&&r++,r===Ve&&r++,r>Ye){if(i)throw"Bad character: "+t;r=Be,i=!0}n+=1e5}return n}(n.charAt(0),l),c=function(t,e){if(t>"V")throw"MGRSPoint given invalid Northing "+t;var r=Ue.charCodeAt(e-1),n=0,i=!1;for(;r!==t.charCodeAt(0);){if(++r===ze&&r++,r===Ve&&r++,r>qe){if(i)throw"Bad character: "+t;r=Be,i=!0}n+=1e5}return n}(n.charAt(1),l);c0&&(f=1e5/Math.pow(10,g),p=t.substring(o,o+g),y=parseFloat(p)*f,d=t.substring(o+g),m=parseFloat(d)*f),{easting:y+u,northing:m+c,zoneLetter:s,zoneNumber:a,accuracy:f}}function er(t){var e;switch(t){case"C":e=11e5;break;case"D":e=2e6;break;case"E":e=28e5;break;case"F":e=37e5;break;case"G":e=46e5;break;case"H":e=55e5;break;case"J":e=64e5;break;case"K":e=73e5;break;case"L":e=82e5;break;case"M":e=91e5;break;case"N":e=0;break;case"P":e=8e5;break;case"Q":e=17e5;break;case"R":e=26e5;break;case"S":e=35e5;break;case"T":e=44e5;break;case"U":e=53e5;break;case"V":e=62e5;break;case"W":e=7e6;break;case"X":e=79e5;break;default:e=-1}if(e>=0)return e;throw"Invalid zone letter: "+t}function rr(t,e,r){if(!(this instanceof rr))return new rr(t,e,r);if(Array.isArray(t))this.x=t[0],this.y=t[1],this.z=t[2]||0;else if("object"==typeof t)this.x=t.x,this.y=t.y,this.z=t.z||0;else if("string"==typeof t&&void 0===e){var n=t.split(",");this.x=parseFloat(n[0],10),this.y=parseFloat(n[1],10),this.z=parseFloat(n[2],10)||0}else this.x=t,this.y=e,this.z=r||0;console.warn("proj4.Point will be removed in version 3, use proj4.toPoint")}rr.fromMGRS=function(t){return new rr(He(t))},rr.prototype.toMGRS=function(t){return Xe([this.x,this.y],t)};var nr=rr,ir=r(92),or=.046875,ar=.01953125,sr=.01068115234375,lr=function(t){var e=[];e[0]=1-t*(.25+t*(or+t*(ar+t*sr))),e[1]=t*(.75-t*(or+t*(ar+t*sr)));var r=t*t;return e[2]=r*(.46875-t*(.013020833333333334+.007120768229166667*t)),r*=t,e[3]=r*(.3645833333333333-.005696614583333333*t),e[4]=r*t*.3076171875,e},ur=function(t,e,r,n){return r*=e,e*=e,n[0]*t-r*(n[1]+e*(n[2]+e*(n[3]+e*n[4])))},cr=function(t,e,r){for(var n=1/(1-e),i=t,o=20;o;--o){var a=Math.sin(i),s=1-e*a*a;if(i-=s=(ur(i,a,Math.cos(i),r)-t)*(s*Math.sqrt(s))*n,Math.abs(s)Dt?Math.tan(o):0,d=Math.pow(p,2),g=Math.pow(d,2);e=1-this.es*Math.pow(s,2),u/=Math.sqrt(e);var y=ur(o,s,l,this.en);r=this.a*(this.k0*u*(1+c/6*(1-d+h+c/20*(5-18*d+g+14*h-58*d*h+c/42*(61+179*g-g*d-479*d)))))+this.x0,n=this.a*(this.k0*(y-this.ml0+s*a*u/2*(1+c/12*(5-d+9*h+4*f+c/30*(61+g-58*d+270*h-330*d*h+c/56*(1385+543*g-g*d-3111*d))))))+this.y0}else{var m=l*Math.sin(a);if(Math.abs(Math.abs(m)-1)=1){if(m-1>Dt)return 93;n=0}else n=Math.acos(n);o<0&&(n=-n),n=this.a*this.k0*(n-this.lat0)+this.y0}return t.x=r,t.y=n,t},inverse:function(t){var e,r,n,i,o=(t.x-this.x0)*(1/this.a),a=(t.y-this.y0)*(1/this.a);if(this.es)if(e=this.ml0+a/this.k0,r=cr(e,this.es,this.en),Math.abs(r)Dt?Math.tan(r):0,c=this.ep2*Math.pow(l,2),h=Math.pow(c,2),f=Math.pow(u,2),p=Math.pow(f,2);e=1-this.es*Math.pow(s,2);var d=o*Math.sqrt(e)/this.k0,g=Math.pow(d,2);n=r-(e*=u)*g/(1-this.es)*.5*(1-g/12*(5+3*f-9*c*f+c-4*h-g/30*(61+90*f-252*c*f+45*p+46*c-g/56*(1385+3633*f+4095*p+1574*p*f)))),i=de(this.long0+d*(1-g/6*(1+2*f+c-g/20*(5+28*f+24*p+8*c*f+6*c-g/42*(61+662*f+1320*p+720*p*f))))/l)}else n=Ft*pe(a),i=0;else{var y=Math.exp(o/this.k0),m=.5*(y-1/y),_=this.lat0+a/this.k0,v=Math.cos(_);e=Math.sqrt((1-Math.pow(v,2))/(1+Math.pow(m,2))),n=Math.asin(e),a<0&&(n=-n),i=0===m&&0===v?0:de(Math.atan2(m,v)+this.long0)}return t.x=i,t.y=n,t},names:["Transverse_Mercator","Transverse Mercator","tmerc"]},fr=function(t){var e=Math.exp(t);return e=(e-1/e)/2},pr=function(t,e){t=Math.abs(t),e=Math.abs(e);var r=Math.max(t,e),n=Math.min(t,e)/(r||1);return r*Math.sqrt(1+Math.pow(n,2))},dr=function(t){var e=Math.abs(t);return e=function(t){var e=1+t,r=e-1;return 0===r?t:t*Math.log(e)/r}(e*(1+e/(pr(1,e)+1))),t<0?-e:e},gr=function(t,e){for(var r,n=2*Math.cos(2*e),i=t.length-1,o=t[i],a=0;--i>=0;)r=n*o-a+t[i],a=o,o=r;return e+r*Math.sin(2*e)},yr=function(t,e,r){for(var n,i,o=Math.sin(e),a=Math.cos(e),s=fr(r),l=function(t){var e=Math.exp(t);return(e+1/e)/2}(r),u=2*a*l,c=-2*o*s,h=t.length-1,f=t[h],p=0,d=0,g=0;--h>=0;)n=d,i=p,f=u*(d=f)-n-c*(p=g)+t[h],g=c*d-i+u*p;return[(u=o*l)*f-(c=a*s)*g,u*g+c*f]};var mr={init:function(){if(void 0===this.es||this.es<=0)throw new Error("incorrect elliptical usage");this.x0=void 0!==this.x0?this.x0:0,this.y0=void 0!==this.y0?this.y0:0,this.long0=void 0!==this.long0?this.long0:0,this.lat0=void 0!==this.lat0?this.lat0:0,this.cgb=[],this.cbg=[],this.utg=[],this.gtu=[];var t=this.es/(1+Math.sqrt(1-this.es)),e=t/(2-t),r=e;this.cgb[0]=e*(2+e*(-2/3+e*(e*(116/45+e*(26/45+e*(-2854/675)))-2))),this.cbg[0]=e*(e*(2/3+e*(4/3+e*(-82/45+e*(32/45+e*(4642/4725)))))-2),r*=e,this.cgb[1]=r*(7/3+e*(e*(-227/45+e*(2704/315+e*(2323/945)))-1.6)),this.cbg[1]=r*(5/3+e*(-16/15+e*(-13/9+e*(904/315+e*(-1522/945))))),r*=e,this.cgb[2]=r*(56/15+e*(-136/35+e*(-1262/105+e*(73814/2835)))),this.cbg[2]=r*(-26/15+e*(34/21+e*(1.6+e*(-12686/2835)))),r*=e,this.cgb[3]=r*(4279/630+e*(-332/35+e*(-399572/14175))),this.cbg[3]=r*(1237/630+e*(e*(-24832/14175)-2.4)),r*=e,this.cgb[4]=r*(4174/315+e*(-144838/6237)),this.cbg[4]=r*(-734/315+e*(109598/31185)),r*=e,this.cgb[5]=r*(601676/22275),this.cbg[5]=r*(444337/155925),r=Math.pow(e,2),this.Qn=this.k0/(1+e)*(1+r*(1/4+r*(1/64+r/256))),this.utg[0]=e*(e*(2/3+e*(-37/96+e*(1/360+e*(81/512+e*(-96199/604800)))))-.5),this.gtu[0]=e*(.5+e*(-2/3+e*(5/16+e*(41/180+e*(-127/288+e*(7891/37800)))))),this.utg[1]=r*(-1/48+e*(-1/15+e*(437/1440+e*(-46/105+e*(1118711/3870720))))),this.gtu[1]=r*(13/48+e*(e*(557/1440+e*(281/630+e*(-1983433/1935360)))-.6)),r*=e,this.utg[2]=r*(-17/480+e*(37/840+e*(209/4480+e*(-5569/90720)))),this.gtu[2]=r*(61/240+e*(-103/140+e*(15061/26880+e*(167603/181440)))),r*=e,this.utg[3]=r*(-4397/161280+e*(11/504+e*(830251/7257600))),this.gtu[3]=r*(49561/161280+e*(-179/168+e*(6601661/7257600))),r*=e,this.utg[4]=r*(-4583/161280+e*(108847/3991680)),this.gtu[4]=r*(34729/80640+e*(-3418889/1995840)),r*=e,this.utg[5]=r*(-20648693/638668800),this.gtu[5]=.6650675310896665*r;var n=gr(this.cbg,this.lat0);this.Zb=-this.Qn*(n+function(t,e){for(var r,n=2*Math.cos(e),i=t.length-1,o=t[i],a=0;--i>=0;)r=n*o-a+t[i],a=o,o=r;return Math.sin(e)*r}(this.gtu,2*n))},forward:function(t){var e=de(t.x-this.long0),r=t.y;r=gr(this.cbg,r);var n=Math.sin(r),i=Math.cos(r),o=Math.sin(e),a=Math.cos(e);r=Math.atan2(n,a*i),e=Math.atan2(o*i,pr(n,i*a)),e=dr(Math.tan(e));var s,l,u=yr(this.gtu,2*r,2*e);return r+=u[0],e+=u[1],Math.abs(e)<=2.623395162778?(s=this.a*(this.Qn*e)+this.x0,l=this.a*(this.Qn*r+this.Zb)+this.y0):(s=1/0,l=1/0),t.x=s,t.y=l,t},inverse:function(t){var e,r,n=(t.x-this.x0)*(1/this.a),i=(t.y-this.y0)*(1/this.a);if(i=(i-this.Zb)/this.Qn,n/=this.Qn,Math.abs(n)<=2.623395162778){var o=yr(this.utg,2*i,2*n);i+=o[0],n+=o[1],n=Math.atan(fr(n));var a=Math.sin(i),s=Math.cos(i),l=Math.sin(n),u=Math.cos(n);i=Math.atan2(a*u,pr(l,u*s)),n=Math.atan2(l,u*s),e=de(n+this.long0),r=gr(this.cgb,i)}else e=1/0,r=1/0;return t.x=e,t.y=r,t},names:["Extended_Transverse_Mercator","Extended Transverse Mercator","etmerc"]};var _r={init:function(){var t=function(t,e){if(void 0===t){if((t=Math.floor(30*(de(e)+Math.PI)/Math.PI)+1)<0)return 0;if(t>60)return 60}return t}(this.zone,this.long0);if(void 0===t)throw new Error("unknown utm zone");this.lat0=0,this.long0=(6*Math.abs(t)-183)*Gt,this.x0=5e5,this.y0=this.utmSouth?1e7:0,this.k0=.9996,mr.init.apply(this),this.forward=mr.forward,this.inverse=mr.inverse},names:["Universal Transverse Mercator System","utm"],dependsOn:"etmerc"},vr=function(t,e){return Math.pow((1-t)/(1+t),e)};var br={init:function(){var t=Math.sin(this.lat0),e=Math.cos(this.lat0);e*=e,this.rc=Math.sqrt(1-this.es)/(1-this.es*t*t),this.C=Math.sqrt(1+this.es*e*e/(1-this.es)),this.phic0=Math.asin(t/this.C),this.ratexp=.5*this.C*this.e,this.K=Math.tan(.5*this.phic0+Bt)/(Math.pow(Math.tan(.5*this.lat0+Bt),this.C)*vr(this.e*t,this.ratexp))},forward:function(t){var e=t.x,r=t.y;return t.y=2*Math.atan(this.K*Math.pow(Math.tan(.5*r+Bt),this.C)*vr(this.e*Math.sin(r),this.ratexp))-Ft,t.x=this.C*e,t},inverse:function(t){for(var e=t.x/this.C,r=t.y,n=Math.pow(Math.tan(.5*r+Bt)/this.K,1/this.C),i=20;i>0&&(r=2*Math.atan(n*vr(this.e*Math.sin(t.y),-.5*this.e))-Ft,!(Math.abs(r-t.y)<1e-14));--i)t.y=r;return i?(t.x=e,t.y=r,t):null},names:["gauss"]};var xr={init:function(){br.init.apply(this),this.rc&&(this.sinc0=Math.sin(this.phic0),this.cosc0=Math.cos(this.phic0),this.R2=2*this.rc,this.title||(this.title="Oblique Stereographic Alternative"))},forward:function(t){var e,r,n,i;return t.x=de(t.x-this.long0),br.forward.apply(this,[t]),e=Math.sin(t.y),r=Math.cos(t.y),n=Math.cos(t.x),i=this.k0*this.R2/(1+this.sinc0*e+this.cosc0*r*n),t.x=i*r*Math.sin(t.x),t.y=i*(this.cosc0*e-this.sinc0*r*n),t.x=this.a*t.x+this.x0,t.y=this.a*t.y+this.y0,t},inverse:function(t){var e,r,n,i,o;if(t.x=(t.x-this.x0)/this.a,t.y=(t.y-this.y0)/this.a,t.x/=this.k0,t.y/=this.k0,o=Math.sqrt(t.x*t.x+t.y*t.y)){var a=2*Math.atan2(o,this.R2);e=Math.sin(a),r=Math.cos(a),i=Math.asin(r*this.sinc0+t.y*e*this.cosc0/o),n=Math.atan2(t.x*e,o*this.cosc0*r-t.y*this.sinc0*e)}else i=this.phic0,n=0;return t.x=n,t.y=i,br.inverse.apply(this,[t]),t.x=de(t.x+this.long0),t},names:["Stereographic_North_Pole","Oblique_Stereographic","Polar_Stereographic","sterea","Oblique Stereographic Alternative","Double_Stereographic"]};var wr={init:function(){this.coslat0=Math.cos(this.lat0),this.sinlat0=Math.sin(this.lat0),this.sphere?1===this.k0&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=Dt&&(this.k0=.5*(1+pe(this.lat0)*Math.sin(this.lat_ts))):(Math.abs(this.coslat0)<=Dt&&(this.lat0>0?this.con=1:this.con=-1),this.cons=Math.sqrt(Math.pow(1+this.e,1+this.e)*Math.pow(1-this.e,1-this.e)),1===this.k0&&!isNaN(this.lat_ts)&&Math.abs(this.coslat0)<=Dt&&(this.k0=.5*this.cons*fe(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts))/ge(this.e,this.con*this.lat_ts,this.con*Math.sin(this.lat_ts))),this.ms1=fe(this.e,this.sinlat0,this.coslat0),this.X0=2*Math.atan(this.ssfn_(this.lat0,this.sinlat0,this.e))-Ft,this.cosX0=Math.cos(this.X0),this.sinX0=Math.sin(this.X0))},forward:function(t){var e,r,n,i,o,a,s=t.x,l=t.y,u=Math.sin(l),c=Math.cos(l),h=de(s-this.long0);return Math.abs(Math.abs(s-this.long0)-Math.PI)<=Dt&&Math.abs(l+this.lat0)<=Dt?(t.x=NaN,t.y=NaN,t):this.sphere?(e=2*this.k0/(1+this.sinlat0*u+this.coslat0*c*Math.cos(h)),t.x=this.a*e*c*Math.sin(h)+this.x0,t.y=this.a*e*(this.coslat0*u-this.sinlat0*c*Math.cos(h))+this.y0,t):(r=2*Math.atan(this.ssfn_(l,u,this.e))-Ft,i=Math.cos(r),n=Math.sin(r),Math.abs(this.coslat0)<=Dt?(o=ge(this.e,l*this.con,this.con*u),a=2*this.a*this.k0*o/this.cons,t.x=this.x0+a*Math.sin(s-this.long0),t.y=this.y0-this.con*a*Math.cos(s-this.long0),t):(Math.abs(this.sinlat0)0?de(this.long0+Math.atan2(t.x,-1*t.y)):de(this.long0+Math.atan2(t.x,t.y)):de(this.long0+Math.atan2(t.x*Math.sin(s),a*this.coslat0*Math.cos(s)-t.y*this.sinlat0*Math.sin(s))),t.x=e,t.y=r,t)}if(Math.abs(this.coslat0)<=Dt){if(a<=Dt)return r=this.lat0,e=this.long0,t.x=e,t.y=r,t;t.x*=this.con,t.y*=this.con,n=a*this.cons/(2*this.a*this.k0),r=this.con*ye(this.e,n),e=this.con*de(this.con*this.long0+Math.atan2(t.x,-1*t.y))}else i=2*Math.atan(a*this.cosX0/(2*this.a*this.k0*this.ms1)),e=this.long0,a<=Dt?o=this.X0:(o=Math.asin(Math.cos(i)*this.sinX0+t.y*Math.sin(i)*this.cosX0/a),e=de(this.long0+Math.atan2(t.x*Math.sin(i),a*this.cosX0*Math.cos(i)-t.y*this.sinX0*Math.sin(i)))),r=-1*ye(this.e,Math.tan(.5*(Ft+o)));return t.x=e,t.y=r,t},names:["stere","Stereographic_South_Pole","Polar Stereographic (variant B)"],ssfn_:function(t,e,r){return e*=r,Math.tan(.5*(Ft+t))*Math.pow((1-e)/(1+e),.5*r)}};var Er={init:function(){var t=this.lat0;this.lambda0=this.long0;var e=Math.sin(t),r=this.a,n=1/this.rf,i=2*n-Math.pow(n,2),o=this.e=Math.sqrt(i);this.R=this.k0*r*Math.sqrt(1-i)/(1-i*Math.pow(e,2)),this.alpha=Math.sqrt(1+i/(1-i)*Math.pow(Math.cos(t),4)),this.b0=Math.asin(e/this.alpha);var a=Math.log(Math.tan(Math.PI/4+this.b0/2)),s=Math.log(Math.tan(Math.PI/4+t/2)),l=Math.log((1+o*e)/(1-o*e));this.K=a-this.alpha*s+this.alpha*o/2*l},forward:function(t){var e=Math.log(Math.tan(Math.PI/4-t.y/2)),r=this.e/2*Math.log((1+this.e*Math.sin(t.y))/(1-this.e*Math.sin(t.y))),n=-this.alpha*(e+r)+this.K,i=2*(Math.atan(Math.exp(n))-Math.PI/4),o=this.alpha*(t.x-this.lambda0),a=Math.atan(Math.sin(o)/(Math.sin(this.b0)*Math.tan(i)+Math.cos(this.b0)*Math.cos(o))),s=Math.asin(Math.cos(this.b0)*Math.sin(i)-Math.sin(this.b0)*Math.cos(i)*Math.cos(o));return t.y=this.R/2*Math.log((1+Math.sin(s))/(1-Math.sin(s)))+this.y0,t.x=this.R*a+this.x0,t},inverse:function(t){for(var e=t.x-this.x0,r=t.y-this.y0,n=e/this.R,i=2*(Math.atan(Math.exp(r/this.R))-Math.PI/4),o=Math.asin(Math.cos(this.b0)*Math.sin(i)+Math.sin(this.b0)*Math.cos(i)*Math.cos(n)),a=Math.atan(Math.sin(n)/(Math.cos(this.b0)*Math.cos(n)-Math.sin(this.b0)*Math.tan(i))),s=this.lambda0+a/this.alpha,l=0,u=o,c=-1e3,h=0;Math.abs(u-c)>1e-7;){if(++h>20)return;l=1/this.alpha*(Math.log(Math.tan(Math.PI/4+o/2))-this.K)+this.e*Math.log(Math.tan(Math.PI/4+Math.asin(this.e*Math.sin(u))/2)),c=u,u=2*Math.atan(Math.exp(l))-Math.PI/2}return t.x=s,t.y=u,t},names:["somerc"]};var Or={init:function(){this.no_off=this.no_off||!1,this.no_rot=this.no_rot||!1,isNaN(this.k0)&&(this.k0=1);var t=Math.sin(this.lat0),e=Math.cos(this.lat0),r=this.e*t;this.bl=Math.sqrt(1+this.es/(1-this.es)*Math.pow(e,4)),this.al=this.a*this.bl*this.k0*Math.sqrt(1-this.es)/(1-r*r);var n,i,o=ge(this.e,this.lat0,t),a=this.bl/e*Math.sqrt((1-this.es)/(1-r*r));if(a*a<1&&(a=1),isNaN(this.longc)){var s=ge(this.e,this.lat1,Math.sin(this.lat1)),l=ge(this.e,this.lat2,Math.sin(this.lat2));this.lat0>=0?this.el=(a+Math.sqrt(a*a-1))*Math.pow(o,this.bl):this.el=(a-Math.sqrt(a*a-1))*Math.pow(o,this.bl);var u=Math.pow(s,this.bl),c=Math.pow(l,this.bl);i=.5*((n=this.el/u)-1/n);var h=(this.el*this.el-c*u)/(this.el*this.el+c*u),f=(c-u)/(c+u),p=de(this.long1-this.long2);this.long0=.5*(this.long1+this.long2)-Math.atan(h*Math.tan(.5*this.bl*p)/f)/this.bl,this.long0=de(this.long0);var d=de(this.long1-this.long0);this.gamma0=Math.atan(Math.sin(this.bl*d)/i),this.alpha=Math.asin(a*Math.sin(this.gamma0))}else n=this.lat0>=0?a+Math.sqrt(a*a-1):a-Math.sqrt(a*a-1),this.el=n*Math.pow(o,this.bl),i=.5*(n-1/n),this.gamma0=Math.asin(Math.sin(this.alpha)/a),this.long0=this.longc-Math.asin(i*Math.tan(this.gamma0))/this.bl;this.no_off?this.uc=0:this.lat0>=0?this.uc=this.al/this.bl*Math.atan2(Math.sqrt(a*a-1),Math.cos(this.alpha)):this.uc=-1*this.al/this.bl*Math.atan2(Math.sqrt(a*a-1),Math.cos(this.alpha))},forward:function(t){var e,r,n,i=t.x,o=t.y,a=de(i-this.long0);if(Math.abs(Math.abs(o)-Ft)<=Dt)n=o>0?-1:1,r=this.al/this.bl*Math.log(Math.tan(Bt+n*this.gamma0*.5)),e=-1*n*Ft*this.al/this.bl;else{var s=ge(this.e,o,Math.sin(o)),l=this.el/Math.pow(s,this.bl),u=.5*(l-1/l),c=.5*(l+1/l),h=Math.sin(this.bl*a),f=(u*Math.sin(this.gamma0)-h*Math.cos(this.gamma0))/c;r=Math.abs(Math.abs(f)-1)<=Dt?Number.POSITIVE_INFINITY:.5*this.al*Math.log((1-f)/(1+f))/this.bl,e=Math.abs(Math.cos(this.bl*a))<=Dt?this.al*this.bl*a:this.al*Math.atan2(u*Math.cos(this.gamma0)+h*Math.sin(this.gamma0),Math.cos(this.bl*a))/this.bl}return this.no_rot?(t.x=this.x0+e,t.y=this.y0+r):(e-=this.uc,t.x=this.x0+r*Math.cos(this.alpha)+e*Math.sin(this.alpha),t.y=this.y0+e*Math.cos(this.alpha)-r*Math.sin(this.alpha)),t},inverse:function(t){var e,r;this.no_rot?(r=t.y-this.y0,e=t.x-this.x0):(r=(t.x-this.x0)*Math.cos(this.alpha)-(t.y-this.y0)*Math.sin(this.alpha),e=(t.y-this.y0)*Math.cos(this.alpha)+(t.x-this.x0)*Math.sin(this.alpha),e+=this.uc);var n=Math.exp(-1*this.bl*r/this.al),i=.5*(n-1/n),o=.5*(n+1/n),a=Math.sin(this.bl*e/this.al),s=(a*Math.cos(this.gamma0)+i*Math.sin(this.gamma0))/o,l=Math.pow(this.el/Math.sqrt((1+s)/(1-s)),1/this.bl);return Math.abs(s-1)Dt?this.ns=Math.log(n/s)/Math.log(i/l):this.ns=e,isNaN(this.ns)&&(this.ns=e),this.f0=n/(this.ns*Math.pow(i,this.ns)),this.rh=this.a*this.f0*Math.pow(u,this.ns),this.title||(this.title="Lambert Conformal Conic")}},forward:function(t){var e=t.x,r=t.y;Math.abs(2*Math.abs(r)-Math.PI)<=Dt&&(r=pe(r)*(Ft-2e-10));var n,i,o=Math.abs(Math.abs(r)-Ft);if(o>Dt)n=ge(this.e,r,Math.sin(r)),i=this.a*this.f0*Math.pow(n,this.ns);else{if((o=r*this.ns)<=0)return null;i=0}var a=this.ns*de(e-this.long0);return t.x=this.k0*(i*Math.sin(a))+this.x0,t.y=this.k0*(this.rh-i*Math.cos(a))+this.y0,t},inverse:function(t){var e,r,n,i,o,a=(t.x-this.x0)/this.k0,s=this.rh-(t.y-this.y0)/this.k0;this.ns>0?(e=Math.sqrt(a*a+s*s),r=1):(e=-Math.sqrt(a*a+s*s),r=-1);var l=0;if(0!==e&&(l=Math.atan2(r*a,r*s)),0!==e||this.ns>0){if(r=1/this.ns,n=Math.pow(e/(this.a*this.f0),r),-9999===(i=ye(this.e,n)))return null}else i=-Ft;return o=de(l/this.ns+this.long0),t.x=o,t.y=i,t},names:["Lambert Tangential Conformal Conic Projection","Lambert_Conformal_Conic","Lambert_Conformal_Conic_2SP","lcc"]};var Ir={init:function(){this.a=6377397.155,this.es=.006674372230614,this.e=Math.sqrt(this.es),this.lat0||(this.lat0=.863937979737193),this.long0||(this.long0=.4334234309119251),this.k0||(this.k0=.9999),this.s45=.785398163397448,this.s90=2*this.s45,this.fi0=this.lat0,this.e2=this.es,this.e=Math.sqrt(this.e2),this.alfa=Math.sqrt(1+this.e2*Math.pow(Math.cos(this.fi0),4)/(1-this.e2)),this.uq=1.04216856380474,this.u0=Math.asin(Math.sin(this.fi0)/this.alfa),this.g=Math.pow((1+this.e*Math.sin(this.fi0))/(1-this.e*Math.sin(this.fi0)),this.alfa*this.e/2),this.k=Math.tan(this.u0/2+this.s45)/Math.pow(Math.tan(this.fi0/2+this.s45),this.alfa)*this.g,this.k1=this.k0,this.n0=this.a*Math.sqrt(1-this.e2)/(1-this.e2*Math.pow(Math.sin(this.fi0),2)),this.s0=1.37008346281555,this.n=Math.sin(this.s0),this.ro0=this.k1*this.n0/Math.tan(this.s0),this.ad=this.s90-this.uq},forward:function(t){var e,r,n,i,o,a,s,l=t.x,u=t.y,c=de(l-this.long0);return e=Math.pow((1+this.e*Math.sin(u))/(1-this.e*Math.sin(u)),this.alfa*this.e/2),r=2*(Math.atan(this.k*Math.pow(Math.tan(u/2+this.s45),this.alfa)/e)-this.s45),n=-c*this.alfa,i=Math.asin(Math.cos(this.ad)*Math.sin(r)+Math.sin(this.ad)*Math.cos(r)*Math.cos(n)),o=Math.asin(Math.cos(r)*Math.sin(n)/Math.cos(i)),a=this.n*o,s=this.ro0*Math.pow(Math.tan(this.s0/2+this.s45),this.n)/Math.pow(Math.tan(i/2+this.s45),this.n),t.y=s*Math.cos(a)/1,t.x=s*Math.sin(a)/1,this.czech||(t.y*=-1,t.x*=-1),t},inverse:function(t){var e,r,n,i,o,a,s,l=t.x;t.x=t.y,t.y=l,this.czech||(t.y*=-1,t.x*=-1),o=Math.sqrt(t.x*t.x+t.y*t.y),i=Math.atan2(t.y,t.x)/Math.sin(this.s0),n=2*(Math.atan(Math.pow(this.ro0/o,1/this.n)*Math.tan(this.s0/2+this.s45))-this.s45),e=Math.asin(Math.cos(this.ad)*Math.sin(n)-Math.sin(this.ad)*Math.cos(n)*Math.cos(i)),r=Math.asin(Math.cos(n)*Math.sin(i)/Math.cos(e)),t.x=this.long0-r/this.alfa,a=e,s=0;var u=0;do{t.y=2*(Math.atan(Math.pow(this.k,-1/this.alfa)*Math.pow(Math.tan(e/2+this.s45),1/this.alfa)*Math.pow((1+this.e*Math.sin(a))/(1-this.e*Math.sin(a)),this.e/2))-this.s45),Math.abs(a-t.y)<1e-10&&(s=1),a=t.y,u+=1}while(0===s&&u<15);return u>=15?null:t},names:["Krovak","krovak"]},Cr=function(t,e,r,n,i){return t*i-e*Math.sin(2*i)+r*Math.sin(4*i)-n*Math.sin(6*i)},Tr=function(t){return 1-.25*t*(1+t/16*(3+1.25*t))},Pr=function(t){return.375*t*(1+.25*t*(1+.46875*t))},Rr=function(t){return.05859375*t*t*(1+.75*t)},Lr=function(t){return t*t*t*(35/3072)},Mr=function(t,e,r){var n=e*r;return t/Math.sqrt(1-n*n)},Nr=function(t){return Math.abs(t)1e-7?(1-t*t)*(e/(1-(r=t*e)*r)-.5/t*Math.log((1-r)/(1+r))):2*e};var Fr=.3333333333333333,Dr=.17222222222222222,Gr=.10257936507936508,Ur=.06388888888888888,Br=.0664021164021164,zr=.016415012942191543;var Vr={init:function(){var t,e=Math.abs(this.lat0);if(Math.abs(e-Ft)0)switch(this.qp=jr(this.e,1),this.mmf=.5/(1-this.es),this.apa=function(t){var e,r=[];return r[0]=t*Fr,e=t*t,r[0]+=e*Dr,r[1]=e*Ur,e*=t,r[0]+=e*Gr,r[1]+=e*Br,r[2]=e*zr,r}(this.es),this.mode){case this.N_POLE:case this.S_POLE:this.dd=1;break;case this.EQUIT:this.rq=Math.sqrt(.5*this.qp),this.dd=1/this.rq,this.xmf=1,this.ymf=.5*this.qp;break;case this.OBLIQ:this.rq=Math.sqrt(.5*this.qp),t=Math.sin(this.lat0),this.sinb1=jr(this.e,t)/this.qp,this.cosb1=Math.sqrt(1-this.sinb1*this.sinb1),this.dd=Math.cos(this.lat0)/(Math.sqrt(1-this.es*t*t)*this.rq*this.cosb1),this.ymf=(this.xmf=this.rq)/this.dd,this.xmf*=this.dd}else this.mode===this.OBLIQ&&(this.sinph0=Math.sin(this.lat0),this.cosph0=Math.cos(this.lat0))},forward:function(t){var e,r,n,i,o,a,s,l,u,c,h=t.x,f=t.y;if(h=de(h-this.long0),this.sphere){if(o=Math.sin(f),c=Math.cos(f),n=Math.cos(h),this.mode===this.OBLIQ||this.mode===this.EQUIT){if((r=this.mode===this.EQUIT?1+c*n:1+this.sinph0*o+this.cosph0*c*n)<=Dt)return null;e=(r=Math.sqrt(2/r))*c*Math.sin(h),r*=this.mode===this.EQUIT?o:this.cosph0*o-this.sinph0*c*n}else if(this.mode===this.N_POLE||this.mode===this.S_POLE){if(this.mode===this.N_POLE&&(n=-n),Math.abs(f+this.phi0)=0?(e=(u=Math.sqrt(a))*i,r=n*(this.mode===this.S_POLE?u:-u)):e=r=0}}return t.x=this.a*e+this.x0,t.y=this.a*r+this.y0,t},inverse:function(t){t.x-=this.x0,t.y-=this.y0;var e,r,n,i,o,a,s,l,u,c,h=t.x/this.a,f=t.y/this.a;if(this.sphere){var p,d=0,g=0;if((r=.5*(p=Math.sqrt(h*h+f*f)))>1)return null;switch(r=2*Math.asin(r),this.mode!==this.OBLIQ&&this.mode!==this.EQUIT||(g=Math.sin(r),d=Math.cos(r)),this.mode){case this.EQUIT:r=Math.abs(p)<=Dt?0:Math.asin(f*g/p),h*=g,f=d*p;break;case this.OBLIQ:r=Math.abs(p)<=Dt?this.phi0:Math.asin(d*this.sinph0+f*g*this.cosph0/p),h*=g*this.cosph0,f=(d-Math.sin(r)*this.sinph0)*p;break;case this.N_POLE:f=-f,r=Ft-r;break;case this.S_POLE:r-=Ft}e=0!==f||this.mode!==this.EQUIT&&this.mode!==this.OBLIQ?Math.atan2(h,f):0}else{if(s=0,this.mode===this.OBLIQ||this.mode===this.EQUIT){if(h/=this.dd,f*=this.dd,(a=Math.sqrt(h*h+f*f))1&&(t=t>1?1:-1),Math.asin(t)};var Yr={init:function(){Math.abs(this.lat1+this.lat2)Dt?this.ns0=(this.ms1*this.ms1-this.ms2*this.ms2)/(this.qs2-this.qs1):this.ns0=this.con,this.c=this.ms1*this.ms1+this.ns0*this.qs1,this.rh=this.a*Math.sqrt(this.c-this.ns0*this.qs0)/this.ns0)},forward:function(t){var e=t.x,r=t.y;this.sin_phi=Math.sin(r),this.cos_phi=Math.cos(r);var n=jr(this.e3,this.sin_phi,this.cos_phi),i=this.a*Math.sqrt(this.c-this.ns0*n)/this.ns0,o=this.ns0*de(e-this.long0),a=i*Math.sin(o)+this.x0,s=this.rh-i*Math.cos(o)+this.y0;return t.x=a,t.y=s,t},inverse:function(t){var e,r,n,i,o,a;return t.x-=this.x0,t.y=this.rh-t.y+this.y0,this.ns0>=0?(e=Math.sqrt(t.x*t.x+t.y*t.y),n=1):(e=-Math.sqrt(t.x*t.x+t.y*t.y),n=-1),i=0,0!==e&&(i=Math.atan2(n*t.x,n*t.y)),n=e*this.ns0/this.a,this.sphere?a=Math.asin((this.c-n*n)/(2*this.ns0)):(r=(this.c-n*n)/this.ns0,a=this.phi1z(this.e3,r)),o=de(i/this.ns0+this.long0),t.x=o,t.y=a,t},names:["Albers_Conic_Equal_Area","Albers","aea"],phi1z:function(t,e){var r,n,i,o,a=qr(.5*e);if(t0||Math.abs(o)<=Dt?(a=this.x0+1*this.a*r*Math.sin(n)/o,s=this.y0+1*this.a*(this.cos_p14*e-this.sin_p14*r*i)/o):(a=this.x0+this.infinity_dist*r*Math.sin(n),s=this.y0+this.infinity_dist*(this.cos_p14*e-this.sin_p14*r*i)),t.x=a,t.y=s,t},inverse:function(t){var e,r,n,i,o,a;return t.x=(t.x-this.x0)/this.a,t.y=(t.y-this.y0)/this.a,t.x/=this.k0,t.y/=this.k0,(e=Math.sqrt(t.x*t.x+t.y*t.y))?(i=Math.atan2(e,this.rc),r=Math.sin(i),n=Math.cos(i),a=qr(n*this.sin_p14+t.y*r*this.cos_p14/e),o=Math.atan2(t.x*r,e*this.cos_p14*n-t.y*this.sin_p14*r),o=de(this.long0+o)):(a=this.phic0,o=0),t.x=o,t.y=a,t},names:["gnom"]};var Xr={init:function(){this.sphere||(this.k0=fe(this.e,Math.sin(this.lat_ts),Math.cos(this.lat_ts)))},forward:function(t){var e,r,n=t.x,i=t.y,o=de(n-this.long0);if(this.sphere)e=this.x0+this.a*o*Math.cos(this.lat_ts),r=this.y0+this.a*Math.sin(i)/Math.cos(this.lat_ts);else{var a=jr(this.e,Math.sin(i));e=this.x0+this.a*this.k0*o,r=this.y0+this.a*a*.5/this.k0}return t.x=e,t.y=r,t},inverse:function(t){var e,r;return t.x-=this.x0,t.y-=this.y0,this.sphere?(e=de(this.long0+t.x/this.a/Math.cos(this.lat_ts)),r=Math.asin(t.y/this.a*Math.cos(this.lat_ts))):(r=function(t,e){var r=1-(1-t*t)/(2*t)*Math.log((1-t)/(1+t));if(Math.abs(Math.abs(e)-r)<1e-6)return e<0?-1*Ft:Ft;for(var n,i,o,a,s=Math.asin(.5*e),l=0;l<30;l++)if(i=Math.sin(s),o=Math.cos(s),a=t*i,s+=n=Math.pow(1-a*a,2)/(2*o)*(e/(1-t*t)-i/(1-a*a)+.5/t*Math.log((1-a)/(1+a))),Math.abs(n)<=1e-10)return s;return NaN}(this.e,2*t.y*this.k0/this.a),e=de(this.long0+t.x/(this.a*this.k0))),t.x=e,t.y=r,t},names:["cea"]};var Hr={init:function(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||"Equidistant Cylindrical (Plate Carre)",this.rc=Math.cos(this.lat_ts)},forward:function(t){var e=t.x,r=t.y,n=de(e-this.long0),i=Nr(r-this.lat0);return t.x=this.x0+this.a*n*this.rc,t.y=this.y0+this.a*i,t},inverse:function(t){var e=t.x,r=t.y;return t.x=de(this.long0+(e-this.x0)/(this.a*this.rc)),t.y=Nr(this.lat0+(r-this.y0)/this.a),t},names:["Equirectangular","Equidistant_Cylindrical","eqc"]};var Zr={init:function(){this.temp=this.b/this.a,this.es=1-Math.pow(this.temp,2),this.e=Math.sqrt(this.es),this.e0=Tr(this.es),this.e1=Pr(this.es),this.e2=Rr(this.es),this.e3=Lr(this.es),this.ml0=this.a*Cr(this.e0,this.e1,this.e2,this.e3,this.lat0)},forward:function(t){var e,r,n,i=t.x,o=t.y,a=de(i-this.long0);if(n=a*Math.sin(o),this.sphere)Math.abs(o)<=Dt?(e=this.a*a,r=-1*this.a*this.lat0):(e=this.a*Math.sin(n)/Math.tan(o),r=this.a*(Nr(o-this.lat0)+(1-Math.cos(n))/Math.tan(o)));else if(Math.abs(o)<=Dt)e=this.a*a,r=-1*this.ml0;else{var s=Mr(this.a,this.e,Math.sin(o))/Math.tan(o);e=s*Math.sin(n),r=this.a*Cr(this.e0,this.e1,this.e2,this.e3,o)-this.ml0+s*(1-Math.cos(n))}return t.x=e+this.x0,t.y=r+this.y0,t},inverse:function(t){var e,r,n,i,o,a,s,l,u;if(n=t.x-this.x0,i=t.y-this.y0,this.sphere)if(Math.abs(i+this.a*this.lat0)<=Dt)e=de(n/this.a+this.long0),r=0;else{var c;for(a=this.lat0+i/this.a,s=n*n/this.a/this.a+a*a,l=a,o=20;o;--o)if(l+=u=-1*(a*(l*(c=Math.tan(l))+1)-l-.5*(l*l+s)*c)/((l-a)/c-1),Math.abs(u)<=Dt){r=l;break}e=de(this.long0+Math.asin(n*Math.tan(l)/this.a)/Math.sin(r))}else if(Math.abs(i+this.ml0)<=Dt)r=0,e=de(this.long0+n/this.a);else{var h,f,p,d,g;for(a=(this.ml0+i)/this.a,s=n*n/this.a/this.a+a*a,l=a,o=20;o;--o)if(g=this.e*Math.sin(l),h=Math.sqrt(1-g*g)*Math.tan(l),f=this.a*Cr(this.e0,this.e1,this.e2,this.e3,l),p=this.e0-2*this.e1*Math.cos(2*l)+4*this.e2*Math.cos(4*l)-6*this.e3*Math.cos(6*l),l-=u=(a*(h*(d=f/this.a)+1)-d-.5*h*(d*d+s))/(this.es*Math.sin(2*l)*(d*d+s-2*a*d)/(4*h)+(a-d)*(h*p-2/Math.sin(2*l))-p),Math.abs(u)<=Dt){r=l;break}h=Math.sqrt(1-this.es*Math.pow(Math.sin(r),2))*Math.tan(r),e=de(this.long0+Math.asin(n*h/this.a)/Math.sin(r))}return t.x=e,t.y=r,t},names:["Polyconic","poly"]};var Kr={init:function(){this.A=[],this.A[1]=.6399175073,this.A[2]=-.1358797613,this.A[3]=.063294409,this.A[4]=-.02526853,this.A[5]=.0117879,this.A[6]=-.0055161,this.A[7]=.0026906,this.A[8]=-.001333,this.A[9]=67e-5,this.A[10]=-34e-5,this.B_re=[],this.B_im=[],this.B_re[1]=.7557853228,this.B_im[1]=0,this.B_re[2]=.249204646,this.B_im[2]=.003371507,this.B_re[3]=-.001541739,this.B_im[3]=.04105856,this.B_re[4]=-.10162907,this.B_im[4]=.01727609,this.B_re[5]=-.26623489,this.B_im[5]=-.36249218,this.B_re[6]=-.6870983,this.B_im[6]=-1.1651967,this.C_re=[],this.C_im=[],this.C_re[1]=1.3231270439,this.C_im[1]=0,this.C_re[2]=-.577245789,this.C_im[2]=-.007809598,this.C_re[3]=.508307513,this.C_im[3]=-.112208952,this.C_re[4]=-.15094762,this.C_im[4]=.18200602,this.C_re[5]=1.01418179,this.C_im[5]=1.64497696,this.C_re[6]=1.9660549,this.C_im[6]=2.5127645,this.D=[],this.D[1]=1.5627014243,this.D[2]=.5185406398,this.D[3]=-.03333098,this.D[4]=-.1052906,this.D[5]=-.0368594,this.D[6]=.007317,this.D[7]=.0122,this.D[8]=.00394,this.D[9]=-.0013},forward:function(t){var e,r=t.x,n=t.y-this.lat0,i=r-this.long0,o=n/jt*1e-5,a=i,s=1,l=0;for(e=1;e<=10;e++)s*=o,l+=this.A[e]*s;var u,c=l,h=a,f=1,p=0,d=0,g=0;for(e=1;e<=6;e++)u=p*c+f*h,f=f*c-p*h,p=u,d=d+this.B_re[e]*f-this.B_im[e]*p,g=g+this.B_im[e]*f+this.B_re[e]*p;return t.x=g*this.a+this.x0,t.y=d*this.a+this.y0,t},inverse:function(t){var e,r,n=t.x,i=t.y,o=n-this.x0,a=(i-this.y0)/this.a,s=o/this.a,l=1,u=0,c=0,h=0;for(e=1;e<=6;e++)r=u*a+l*s,l=l*a-u*s,u=r,c=c+this.C_re[e]*l-this.C_im[e]*u,h=h+this.C_im[e]*l+this.C_re[e]*u;for(var f=0;f.999999999999&&(r=.999999999999),e=Math.asin(r);var n=de(this.long0+t.x/(.900316316158*this.a*Math.cos(e)));n<-Math.PI&&(n=-Math.PI),n>Math.PI&&(n=Math.PI),r=(2*e+Math.sin(2*e))/Math.PI,Math.abs(r)>1&&(r=1);var i=Math.asin(r);return t.x=n,t.y=i,t},names:["Mollweide","moll"]};var tn={init:function(){Math.abs(this.lat1+this.lat2)=0?(r=Math.sqrt(t.x*t.x+t.y*t.y),e=1):(r=-Math.sqrt(t.x*t.x+t.y*t.y),e=-1);var o=0;if(0!==r&&(o=Math.atan2(e*t.x,e*t.y)),this.sphere)return i=de(this.long0+o/this.ns),n=Nr(this.g-r/this.a),t.x=i,t.y=n,t;var a=this.g-r/this.a;return n=Ar(a,this.e0,this.e1,this.e2,this.e3),i=de(this.long0+o/this.ns),t.x=i,t.y=n,t},names:["Equidistant_Conic","eqdc"]};var en={init:function(){this.R=this.a},forward:function(t){var e,r,n=t.x,i=t.y,o=de(n-this.long0);Math.abs(i)<=Dt&&(e=this.x0+this.R*o,r=this.y0);var a=qr(2*Math.abs(i/Math.PI));(Math.abs(o)<=Dt||Math.abs(Math.abs(i)-Ft)<=Dt)&&(e=this.x0,r=i>=0?this.y0+Math.PI*this.R*Math.tan(.5*a):this.y0+Math.PI*this.R*-Math.tan(.5*a));var s=.5*Math.abs(Math.PI/o-o/Math.PI),l=s*s,u=Math.sin(a),c=Math.cos(a),h=c/(u+c-1),f=h*h,p=h*(2/u-1),d=p*p,g=Math.PI*this.R*(s*(h-d)+Math.sqrt(l*(h-d)*(h-d)-(d+l)*(f-d)))/(d+l);o<0&&(g=-g),e=this.x0+g;var y=l+h;return g=Math.PI*this.R*(p*y-s*Math.sqrt((d+l)*(l+1)-y*y))/(d+l),r=i>=0?this.y0+g:this.y0-g,t.x=e,t.y=r,t},inverse:function(t){var e,r,n,i,o,a,s,l,u,c,h,f;return t.x-=this.x0,t.y-=this.y0,h=Math.PI*this.R,o=(n=t.x/h)*n+(i=t.y/h)*i,h=3*(i*i/(l=-2*(a=-Math.abs(i)*(1+o))+1+2*i*i+o*o)+(2*(s=a-2*i*i+n*n)*s*s/l/l/l-9*a*s/l/l)/27)/(u=(a-s*s/3/l)/l)/(c=2*Math.sqrt(-u/3)),Math.abs(h)>1&&(h=h>=0?1:-1),f=Math.acos(h)/3,r=t.y>=0?(-c*Math.cos(f+Math.PI/3)-s/3/l)*Math.PI:-(-c*Math.cos(f+Math.PI/3)-s/3/l)*Math.PI,e=Math.abs(n)2*Ft*this.a)return;return r=e/this.a,n=Math.sin(r),i=Math.cos(r),o=this.long0,Math.abs(e)<=Dt?a=this.lat0:(a=qr(i*this.sin_p12+t.y*n*this.cos_p12/e),s=Math.abs(this.lat0)-Ft,o=Math.abs(s)<=Dt?this.lat0>=0?de(this.long0+Math.atan2(t.x,-t.y)):de(this.long0-Math.atan2(-t.x,t.y)):de(this.long0+Math.atan2(t.x*n,e*this.cos_p12*i-t.y*this.sin_p12*n))),t.x=o,t.y=a,t}return l=Tr(this.es),u=Pr(this.es),c=Rr(this.es),h=Lr(this.es),Math.abs(this.sin_p12-1)<=Dt?(f=this.a*Cr(l,u,c,h,Ft),e=Math.sqrt(t.x*t.x+t.y*t.y),a=Ar((f-e)/this.a,l,u,c,h),o=de(this.long0+Math.atan2(t.x,-1*t.y)),t.x=o,t.y=a,t):Math.abs(this.sin_p12+1)<=Dt?(f=this.a*Cr(l,u,c,h,Ft),e=Math.sqrt(t.x*t.x+t.y*t.y),a=Ar((e-f)/this.a,l,u,c,h),o=de(this.long0+Math.atan2(t.x,t.y)),t.x=o,t.y=a,t):(e=Math.sqrt(t.x*t.x+t.y*t.y),g=Math.atan2(t.x,t.y),p=Mr(this.a,this.e,this.sin_p12),y=Math.cos(g),_=-(m=this.e*this.cos_p12*y)*m/(1-this.es),v=3*this.es*(1-_)*this.sin_p12*this.cos_p12*y/(1-this.es),w=1-_*(x=(b=e/p)-_*(1+_)*Math.pow(b,3)/6-v*(1+3*_)*Math.pow(b,4)/24)*x/2-b*x*x*x/6,d=Math.asin(this.sin_p12*Math.cos(x)+this.cos_p12*Math.sin(x)*y),o=de(this.long0+Math.asin(Math.sin(g)*Math.sin(x)/Math.cos(d))),a=Math.atan((1-this.es*w*this.sin_p12/Math.sin(d))*Math.tan(d)/(1-this.es)),t.x=o,t.y=a,t)},names:["Azimuthal_Equidistant","aeqd"]};var nn={init:function(){this.sin_p14=Math.sin(this.lat0),this.cos_p14=Math.cos(this.lat0)},forward:function(t){var e,r,n,i,o,a,s,l=t.x,u=t.y;return n=de(l-this.long0),e=Math.sin(u),r=Math.cos(u),i=Math.cos(n),1,((o=this.sin_p14*e+this.cos_p14*r*i)>0||Math.abs(o)<=Dt)&&(a=1*this.a*r*Math.sin(n),s=this.y0+1*this.a*(this.cos_p14*e-this.sin_p14*r*i)),t.x=a,t.y=s,t},inverse:function(t){var e,r,n,i,o,a,s;return t.x-=this.x0,t.y-=this.y0,e=Math.sqrt(t.x*t.x+t.y*t.y),r=qr(e/this.a),n=Math.sin(r),i=Math.cos(r),a=this.long0,Math.abs(e)<=Dt?(s=this.lat0,t.x=a,t.y=s,t):(s=qr(i*this.sin_p14+t.y*n*this.cos_p14/e),o=Math.abs(this.lat0)-Ft,Math.abs(o)<=Dt?(a=this.lat0>=0?de(this.long0+Math.atan2(t.x,-t.y)):de(this.long0-Math.atan2(-t.x,t.y)),t.x=a,t.y=s,t):(a=de(this.long0+Math.atan2(t.x*n,e*this.cos_p14*i-t.y*this.sin_p14*n)),t.x=a,t.y=s,t))},names:["ortho"]},on=1,an=2,sn=3,ln=4,un=5,cn=6,hn=1,fn=2,pn=3,dn=4;function gn(t,e,r,n){var i;return tBt&&i<=Ft+Bt?(n.value=fn,i-=Ft):i>Ft+Bt||i<=-(Ft+Bt)?(n.value=pn,i=i>=0?i-Vt:i+Vt):(n.value=dn,i+=Ft)),i}function yn(t,e){var r=t+e;return r<-Vt?r+=zt:r>+Vt&&(r-=zt),r}var mn={init:function(){this.x0=this.x0||0,this.y0=this.y0||0,this.lat0=this.lat0||0,this.long0=this.long0||0,this.lat_ts=this.lat_ts||0,this.title=this.title||"Quadrilateralized Spherical Cube",this.lat0>=Ft-Bt/2?this.face=un:this.lat0<=-(Ft-Bt/2)?this.face=cn:Math.abs(this.long0)<=Bt?this.face=on:Math.abs(this.long0)<=Ft+Bt?this.face=this.long0>0?an:ln:this.face=sn,0!==this.es&&(this.one_minus_f=1-(this.a-this.b)/this.a,this.one_minus_f_squared=this.one_minus_f*this.one_minus_f)},forward:function(t){var e,r,n,i,o,a,s={x:0,y:0},l={value:0};if(t.x-=this.long0,e=0!==this.es?Math.atan(this.one_minus_f_squared*Math.tan(t.y)):t.y,r=t.x,this.face===un)i=Ft-e,r>=Bt&&r<=Ft+Bt?(l.value=hn,n=r-Ft):r>Ft+Bt||r<=-(Ft+Bt)?(l.value=fn,n=r>0?r-Vt:r+Vt):r>-(Ft+Bt)&&r<=-Bt?(l.value=pn,n=r+Ft):(l.value=dn,n=r);else if(this.face===cn)i=Ft+e,r>=Bt&&r<=Ft+Bt?(l.value=hn,n=-r+Ft):r=-Bt?(l.value=fn,n=-r):r<-Bt&&r>=-(Ft+Bt)?(l.value=pn,n=-r-Ft):(l.value=dn,n=r>0?-r+Vt:-r-Vt);else{var u,c,h,f,p,d;this.face===an?r=yn(r,+Ft):this.face===sn?r=yn(r,+Vt):this.face===ln&&(r=yn(r,-Ft)),f=Math.sin(e),p=Math.cos(e),d=Math.sin(r),u=p*Math.cos(r),c=p*d,h=f,this.face===on?n=gn(i=Math.acos(u),h,c,l):this.face===an?n=gn(i=Math.acos(c),h,-u,l):this.face===sn?n=gn(i=Math.acos(-u),h,-c,l):this.face===ln?n=gn(i=Math.acos(-c),h,u,l):(i=n=0,l.value=hn)}return a=Math.atan(12/Vt*(n+Math.acos(Math.sin(n)*Math.cos(Bt))-Ft)),o=Math.sqrt((1-Math.cos(i))/(Math.cos(a)*Math.cos(a))/(1-Math.cos(Math.atan(1/Math.cos(n))))),l.value===fn?a+=Ft:l.value===pn?a+=Vt:l.value===dn&&(a+=1.5*Vt),s.x=o*Math.cos(a),s.y=o*Math.sin(a),s.x=s.x*this.a+this.x0,s.y=s.y*this.a+this.y0,t.x=s.x,t.y=s.y,t},inverse:function(t){var e,r,n,i,o,a,s,l,u,c,h,f,p={lam:0,phi:0},d={value:0};if(t.x=(t.x-this.x0)/this.a,t.y=(t.y-this.y0)/this.a,r=Math.atan(Math.sqrt(t.x*t.x+t.y*t.y)),e=Math.atan2(t.y,t.x),t.x>=0&&t.x>=Math.abs(t.y)?d.value=hn:t.y>=0&&t.y>=Math.abs(t.x)?(d.value=fn,e-=Ft):t.x<0&&-t.x>=Math.abs(t.y)?(d.value=pn,e=e<0?e+Vt:e-Vt):(d.value=dn,e+=Ft),u=Vt/12*Math.tan(e),o=Math.sin(u)/(Math.cos(u)-1/Math.sqrt(2)),a=Math.atan(o),(s=1-(n=Math.cos(e))*n*(i=Math.tan(r))*i*(1-Math.cos(Math.atan(1/Math.cos(a)))))<-1?s=-1:s>1&&(s=1),this.face===un)l=Math.acos(s),p.phi=Ft-l,d.value===hn?p.lam=a+Ft:d.value===fn?p.lam=a<0?a+Vt:a-Vt:d.value===pn?p.lam=a-Ft:p.lam=a;else if(this.face===cn)l=Math.acos(s),p.phi=l-Ft,d.value===hn?p.lam=-a+Ft:d.value===fn?p.lam=-a:d.value===pn?p.lam=-a-Ft:p.lam=a<0?-a-Vt:-a+Vt;else{var g,y,m;u=(g=s)*g,y=(u+=(m=u>=1?0:Math.sqrt(1-u)*Math.sin(a))*m)>=1?0:Math.sqrt(1-u),d.value===fn?(u=y,y=-m,m=u):d.value===pn?(y=-y,m=-m):d.value===dn&&(u=y,y=m,m=-u),this.face===an?(u=g,g=-y,y=u):this.face===sn?(g=-g,y=-y):this.face===ln&&(u=g,g=y,y=-u),p.phi=Math.acos(-m)-Ft,p.lam=Math.atan2(y,g),this.face===an?p.lam=yn(p.lam,-Ft):this.face===sn?p.lam=yn(p.lam,-Vt):this.face===ln&&(p.lam=yn(p.lam,+Ft))}return 0!==this.es&&(c=p.phi<0?1:0,h=Math.tan(p.phi),f=this.b/Math.sqrt(h*h+this.one_minus_f_squared),p.phi=Math.atan(Math.sqrt(this.a*this.a-f*f)/(this.one_minus_f*f)),c&&(p.phi=-p.phi)),p.lam+=this.long0,t.x=p.lam,t.y=p.phi,t},names:["Quadrilateralized Spherical Cube","Quadrilateralized_Spherical_Cube","qsc"]},_n=[[1,22199e-21,-715515e-10,31103e-10],[.9986,-482243e-9,-24897e-9,-13309e-10],[.9954,-83103e-8,-448605e-10,-9.86701e-7],[.99,-.00135364,-59661e-9,36777e-10],[.9822,-.00167442,-449547e-11,-572411e-11],[.973,-.00214868,-903571e-10,1.8736e-8],[.96,-.00305085,-900761e-10,164917e-11],[.9427,-.00382792,-653386e-10,-26154e-10],[.9216,-.00467746,-10457e-8,481243e-11],[.8962,-.00536223,-323831e-10,-543432e-11],[.8679,-.00609363,-113898e-9,332484e-11],[.835,-.00698325,-640253e-10,9.34959e-7],[.7986,-.00755338,-500009e-10,9.35324e-7],[.7597,-.00798324,-35971e-9,-227626e-11],[.7186,-.00851367,-701149e-10,-86303e-10],[.6732,-.00986209,-199569e-9,191974e-10],[.6213,-.010418,883923e-10,624051e-11],[.5722,-.00906601,182e-6,624051e-11],[.5322,-.00677797,275608e-9,624051e-11]],vn=[[-520417e-23,.0124,121431e-23,-845284e-16],[.062,.0124,-1.26793e-9,4.22642e-10],[.124,.0124,5.07171e-9,-1.60604e-9],[.186,.0123999,-1.90189e-8,6.00152e-9],[.248,.0124002,7.10039e-8,-2.24e-8],[.31,.0123992,-2.64997e-7,8.35986e-8],[.372,.0124029,9.88983e-7,-3.11994e-7],[.434,.0123893,-369093e-11,-4.35621e-7],[.4958,.0123198,-102252e-10,-3.45523e-7],[.5571,.0121916,-154081e-10,-5.82288e-7],[.6176,.0119938,-241424e-10,-5.25327e-7],[.6769,.011713,-320223e-10,-5.16405e-7],[.7346,.0113541,-397684e-10,-6.09052e-7],[.7903,.0109107,-489042e-10,-104739e-11],[.8435,.0103431,-64615e-9,-1.40374e-9],[.8936,.00969686,-64636e-9,-8547e-9],[.9394,.00840947,-192841e-9,-42106e-10],[.9761,.00616527,-256e-6,-42106e-10],[1,.00328947,-319159e-9,-42106e-10]],bn=.8487,xn=1.3523,wn=Ut/5,En=18,On=function(t,e){return t[0]+e*(t[1]+e*(t[2]+e*t[3]))};var Sn,In={init:function(){this.x0=this.x0||0,this.y0=this.y0||0,this.long0=this.long0||0,this.es=0,this.title=this.title||"Robinson"},forward:function(t){var e=de(t.x-this.long0),r=Math.abs(t.y),n=Math.floor(r*wn);n<0?n=0:n>=En&&(n=17);var i={x:On(_n[n],r=Ut*(r-.08726646259971647*n))*e,y:On(vn[n],r)};return t.y<0&&(i.y=-i.y),i.x=i.x*this.a*bn+this.x0,i.y=i.y*this.a*xn+this.y0,i},inverse:function(t){var e={x:(t.x-this.x0)/(this.a*bn),y:Math.abs(t.y-this.y0)/(this.a*xn)};if(e.y>=1)e.x/=_n[18][0],e.y=t.y<0?-Ft:Ft;else{var r=Math.floor(e.y*En);for(r<0?r=0:r>=En&&(r=17);;)if(vn[r][0]>e.y)--r;else{if(!(vn[r+1][0]<=e.y))break;++r}var n=vn[r],i=5*(e.y-n[0])/(vn[r+1][0]-n[0]);i=function(t,e,r,n){for(var i=e;n;--n){var o=t(i);if(i-=o,Math.abs(o)this.maxCacheSize_},t.prototype.expire=function(){if(this.canExpireCache()){var t=0;for(var e in this.cache_){var r=this.cache_[e];0!=(3&t++)||r.hasListener()||(delete this.cache_[e],--this.cacheSize_)}}},t.prototype.get=function(t,e,r){var n=Vn(t,e,r);return n in this.cache_?this.cache_[n]:null},t.prototype.set=function(t,e,r,n){var i=Vn(t,e,r);this.cache_[i]=n,++this.cacheSize_},t.prototype.setSize=function(t){this.maxCacheSize_=t,this.expire()},t}();function Vn(t,e,r){return e+":"+t+":"+(r?Object(Bn.b)(r):"null")}var qn=new zn,Yn=r(38),Wn=r(13),Xn=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Hn(t,e){qn.expire()}var Zn=function(t){function e(e){var r=t.call(this)||this;return r.map_=e,r}return Xn(e,t),e.prototype.dispatchRenderEvent=function(t,e){Object(Gn.b)()},e.prototype.calculateMatrices2D=function(t){var e=t.viewState,r=t.coordinateToPixelTransform,n=t.pixelToCoordinateTransform;Object(Un.b)(r,t.size[0]/2,t.size[1]/2,1/e.resolution,-1/e.resolution,-e.rotation,-e.center[0],-e.center[1]),Object(Un.e)(n,r)},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i,o,a,s){var l,u=e.viewState;function c(t,e,r,n){return i.call(o,e,t?r:null,n)}var h=u.projection,f=Object(Wn.p)(t.slice(),h),p=[[0,0]];if(h.canWrapX()&&n){var d=h.getExtent(),g=Object(mt.F)(d);p.push([-g,0],[g,0])}for(var y=e.layerStatesArray,m=y.length,_=[],v=[],b=0;b=0;--x){var w=y[x],E=w.layer;if(E.hasRenderer()&&Object(Yn.b)(w,u)&&a.call(s,E)){var O=E.getRenderer(),S=E.getSource();if(O&&S){var I=S.getWrapX()?f:t,C=c.bind(null,w.managed);v[0]=I[0]+p[b][0],v[1]=I[1]+p[b][1],l=O.forEachFeatureAtCoordinate(v,e,r,C,_)}if(l)return l}}if(0!==_.length){var T=1/_.length;return _.forEach((function(t,e){return t.distanceSq+=e*T})),_.sort((function(t,e){return t.distanceSq-e.distanceSq})),_.some((function(t){return l=t.callback(t.feature,t.layer,t.geometry)})),l}},e.prototype.forEachLayerAtPixel=function(t,e,r,n,i){return Object(Gn.b)()},e.prototype.hasFeatureAtCoordinate=function(t,e,r,n,i,o){return void 0!==this.forEachFeatureAtCoordinate(t,e,r,n,Dn.b,this,i,o)},e.prototype.getMap=function(){return this.map_},e.prototype.renderFrame=function(t){Object(Gn.b)()},e.prototype.scheduleExpireIconCache=function(t){qn.canExpireCache()&&t.postRenderFunctions.push(Hn)},e}(Fn.a),Kn=r(47),Jn=r(59),$n=r(33),Qn=r(19),ti=r(20),ei=r(30),ri=r(42),ni=r(27),ii=r(5),oi=r(15),ai="10px sans-serif",si="#000",li="round",ui=[],ci="round",hi="#000",fi="center",pi="middle",di=[0,0,0,0],gi=new ei.a,yi=new ri.a;yi.setSize=function(){console.warn("labelCache is deprecated.")};var mi,_i,vi=null,bi={},xi=function(){var t,e,r="32px ",n=["monospace","serif"],i=n.length,o="wmytzilWMYTZIL@#/&?$%10";function a(t,a,s){for(var l=!0,u=0;u=0;--o)n[o].renderDeclutter(t);Object(oi.f)(this.element_,this.children_),this.dispatchRenderEvent($n.a.POSTCOMPOSE,t),this.renderedVisible_||(this.element_.style.display="",this.renderedVisible_=!0),this.scheduleExpireIconCache(t)}else this.renderedVisible_&&(this.element_.style.display="none",this.renderedVisible_=!1)},e.prototype.forEachLayerAtPixel=function(t,e,r,n,i){for(var o=e.viewState,a=e.layerStatesArray,s=a.length-1;s>=0;--s){var l=a[s],u=l.layer;if(u.hasRenderer()&&Object(Yn.b)(l,o)&&i(u)){var c=u.getRenderer().getDataAtPixel(t,e,r);if(c){var h=n(u,c);if(h)return h}}}},e}(Zn),Ri=r(68),Li="add",Mi="remove",Ni=r(21),Ai=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ki="length",ji=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.element=r,i.index=n,i}return Ai(e,t),e}(Ni.a),Fi=function(t){function e(e,r){var n=t.call(this)||this;n.on,n.once,n.un;var i=r||{};if(n.unique_=!!i.unique,n.array_=e||[],n.unique_)for(var o=0,a=n.array_.length;o0;)this.pop()},e.prototype.extend=function(t){for(var e=0,r=t.length;ethis.moveTolerance_||Math.abs(t.clientY-this.down_.clientY)>this.moveTolerance_},e.prototype.disposeInternal=function(){this.relayedListenerKey_&&(Object(Ci.c)(this.relayedListenerKey_),this.relayedListenerKey_=null),this.element_.removeEventListener(Di.a.TOUCHMOVE,this.boundHandleTouchMove_),this.pointerdownListenerKey_&&(Object(Ci.c)(this.pointerdownListenerKey_),this.pointerdownListenerKey_=null),this.dragListenerKeys_.forEach(Ci.c),this.dragListenerKeys_.length=0,this.element_=null,t.prototype.disposeInternal.call(this)},e}(ri.a),ro="postrender",no="movestart",io="moveend",oo="loadstart",ao="loadend",so="layergroup",lo="size",uo="target",co="view",ho=r(81),fo=r(2),po=r(24),go={CENTER:"center",RESOLUTION:"resolution",ROTATION:"rotation"},yo=r(50),mo=r(4);function _o(t,e,r){return function(n,i,o,a,s){if(n){if(!i&&!e)return n;var l=e?0:o[0]*i,u=e?0:o[1]*i,c=s?s[0]:0,h=s?s[1]:0,f=t[0]+l/2+c,p=t[2]-l/2+c,d=t[1]+u/2+h,g=t[3]-u/2+h;f>p&&(p=f=(p+f)/2),d>g&&(g=d=(g+d)/2);var y=Object(mo.b)(n[0],f,p),m=Object(mo.b)(n[1],d,g);if(a&&r&&i){var _=30*i;y+=-_*Math.log(1+Math.max(0,f-n[0])/_)+_*Math.log(1+Math.max(0,n[0]-p)/_),m+=-_*Math.log(1+Math.max(0,d-n[1])/_)+_*Math.log(1+Math.max(0,n[1]-g)/_)}return[y,m]}}}function vo(t){return t}function bo(t,e,r,n){var i=Object(mt.F)(e)/r[0],o=Object(mt.A)(e)/r[1];return n?Math.min(t,Math.max(i,o)):Math.min(t,Math.min(i,o))}function xo(t,e,r){var n=Math.min(t,e);return n*=Math.log(1+50*Math.max(0,t/e-1))/50+1,r&&(n=Math.max(n,r),n/=Math.log(1+50*Math.max(0,r/t-1))/50+1),Object(mo.b)(n,r/2,2*e)}function wo(t,e,r,n,i){return function(o,a,s,l){if(void 0!==o){var u=n?bo(t,n,s,i):t;return(void 0===r||r)&&l?xo(o,u,e):Object(mo.b)(o,e,u)}}}function Eo(t){return void 0!==t?0:void 0}function Oo(t){return void 0!==t?t:void 0}var So=r(28),Io="XY",Co="XYZ",To="XYM",Po="XYZM";function Ro(t,e,r,n,i,o){for(var a=o||[],s=0,l=e;l1)s=r;else{if(f>0){for(var p=0;pi&&(i=u),o=s,a=l}return i}function Bo(t,e,r,n,i){for(var o=0,a=r.length;o0;){for(var h=u.pop(),f=u.pop(),p=0,d=t[f],g=t[f+1],y=t[h],m=t[h+1],_=f+n;_p&&(c=_,p=x)}p>i&&(l[(c-e)/n]=1,f+n0&&g>p)&&(d<0&&y0&&y>d)?(s=h,l=f):(o[a++]=s,o[a++]=l,u=s,c=l,s=h,l=f)}}return o[a++]=s,o[a++]=l,a}function Jo(t,e,r,n,i,o,a,s){for(var l=0,u=r.length;lo&&(u-s)*(o-l)-(i-s)*(c-l)>0&&a++:c<=o&&(u-s)*(o-l)-(i-s)*(c-l)<0&&a--,s=u,l=c}return 0!==a}function ua(t,e,r,n,i,o){if(0===r.length)return!1;if(!la(t,e,r[0],n,i,o))return!1;for(var a=1,s=r.length;ax&&ua(t,e,r,n,u=(c+f)/2,g)&&(b=u,x=w),c=f}return isNaN(b)&&(b=i[o]),a?(a.push(b,g,x),a):[b,g,x]}function ha(t,e,r,n,i){for(var o=[],a=0,s=r.length;a=i[0]&&o[2]<=i[2]||(o[1]>=i[1]&&o[3]<=i[3]||fa(t,e,r,n,(function(t,e){return Object(mt.H)(i,t,e)})))))}function da(t,e,r,n,i){if(!function(t,e,r,n,i){return!!(pa(t,e,r,n,i)||la(t,e,r,n,i[0],i[1])||la(t,e,r,n,i[0],i[3])||la(t,e,r,n,i[2],i[1])||la(t,e,r,n,i[2],i[3]))}(t,e,r[0],n,i))return!1;if(1===r.length)return!0;for(var o=1,a=r.length;o0}function ma(t,e,r,n,i){for(var o=void 0!==i&&i,a=0,s=r.length;ac&&p1&&"function"==typeof arguments[r-1]&&(e=arguments[r-1],--r);for(var n=0;n0},e.prototype.getInteracting=function(){return this.hints_[po.a.INTERACTING]>0},e.prototype.cancelAnimations=function(){var t;this.setHint(po.a.ANIMATING,-this.hints_[po.a.ANIMATING]);for(var e=0,r=this.animations_.length;e=0;--r){for(var n=this.animations_[r],i=!0,o=0,a=n.length;o0?l/s.duration:1;u>=1?(s.complete=!0,u=1):i=!1;var c=s.easing(u);if(s.sourceCenter){var h=s.sourceCenter[0],f=s.sourceCenter[1],p=s.targetCenter[0],d=s.targetCenter[1];this.nextCenter_=s.targetCenter;var g=h+c*(p-h),y=f+c*(d-f);this.targetCenter_=[g,y]}if(s.sourceResolution&&s.targetResolution){var m=1===c?s.targetResolution:s.sourceResolution+c*(s.targetResolution-s.sourceResolution);if(s.anchor){var _=this.getViewportSize_(this.getRotation()),v=this.constraints_.resolution(m,0,_,!0);this.targetCenter_=this.calculateCenterZoom(v,s.anchor)}this.nextResolution_=s.targetResolution,this.targetResolution_=m,this.applyTargetState_(!0)}if(void 0!==s.sourceRotation&&void 0!==s.targetRotation){var b=1===c?Object(mo.g)(s.targetRotation+Math.PI,2*Math.PI)-Math.PI:s.sourceRotation+c*(s.targetRotation-s.sourceRotation);if(s.anchor){var x=this.constraints_.rotation(b,!0);this.targetCenter_=this.calculateCenterRotate(x,s.anchor)}this.nextRotation_=s.targetRotation,this.targetRotation_=b}if(this.applyTargetState_(!0),e=!0,!s.complete)break}}if(i){this.animations_[r]=null,this.setHint(po.a.ANIMATING,-1),this.nextCenter_=null,this.nextResolution_=NaN,this.nextRotation_=NaN;var w=n[0].callback;w&&Ra(w,!0)}}this.animations_=this.animations_.filter(Boolean),e&&void 0===this.updateAnimationKey_&&(this.updateAnimationKey_=requestAnimationFrame(this.updateAnimations_.bind(this)))}},e.prototype.calculateCenterRotate=function(t,e){var r,n=this.getCenterInternal();return void 0!==n&&(r=[n[0]-e[0],n[1]-e[1]],Object(Wn.j)(r,t-this.getRotation()),Object(Wn.a)(r,e)),r},e.prototype.calculateCenterZoom=function(t,e){var r,n=this.getCenterInternal(),i=this.getResolution();void 0!==n&&void 0!==i&&(r=[e[0]-t*(e[0]-n[0])/i,e[1]-t*(e[1]-n[1])/i]);return r},e.prototype.getViewportSize_=function(t){var e=this.viewportSize_;if(t){var r=e[0],n=e[1];return[Math.abs(r*Math.cos(t))+Math.abs(n*Math.sin(t)),Math.abs(r*Math.sin(t))+Math.abs(n*Math.cos(t))]}return e},e.prototype.setViewportSize=function(t){this.viewportSize_=Array.isArray(t)?t.slice():[100,100],this.getAnimating()||this.resolveConstraints(0)},e.prototype.getCenter=function(){var t=this.getCenterInternal();return t?Object(u.w)(t,this.getProjection()):t},e.prototype.getCenterInternal=function(){return this.get(go.CENTER)},e.prototype.getConstraints=function(){return this.constraints_},e.prototype.getConstrainResolution=function(){return this.get("constrainResolution")},e.prototype.getHints=function(t){return void 0!==t?(t[0]=this.hints_[0],t[1]=this.hints_[1],t):this.hints_.slice()},e.prototype.calculateExtent=function(t){var e=this.calculateExtentInternal(t);return Object(u.x)(e,this.getProjection())},e.prototype.calculateExtentInternal=function(t){var e=t||this.getViewportSizeMinusPadding_(),r=this.getCenterInternal();Object(Ui.a)(r,1);var n=this.getResolution();Object(Ui.a)(void 0!==n,2);var i=this.getRotation();return Object(Ui.a)(void 0!==i,3),Object(mt.z)(r,n,i,e)},e.prototype.getMaxResolution=function(){return this.maxResolution_},e.prototype.getMinResolution=function(){return this.minResolution_},e.prototype.getMaxZoom=function(){return this.getZoomForResolution(this.minResolution_)},e.prototype.setMaxZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({maxZoom:t}))},e.prototype.getMinZoom=function(){return this.getZoomForResolution(this.maxResolution_)},e.prototype.setMinZoom=function(t){this.applyOptions_(this.getUpdatedOptions_({minZoom:t}))},e.prototype.setConstrainResolution=function(t){this.applyOptions_(this.getUpdatedOptions_({constrainResolution:t}))},e.prototype.getProjection=function(){return this.projection_},e.prototype.getResolution=function(){return this.get(go.RESOLUTION)},e.prototype.getResolutions=function(){return this.resolutions_},e.prototype.getResolutionForExtent=function(t,e){return this.getResolutionForExtentInternal(Object(u.m)(t,this.getProjection()),e)},e.prototype.getResolutionForExtentInternal=function(t,e){var r=e||this.getViewportSizeMinusPadding_(),n=Object(mt.F)(t)/r[0],i=Object(mt.A)(t)/r[1];return Math.max(n,i)},e.prototype.getResolutionForValueFunction=function(t){var e=t||2,r=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,i=Math.log(r/n)/Math.log(e);return function(t){return r/Math.pow(e,t*i)}},e.prototype.getRotation=function(){return this.get(go.ROTATION)},e.prototype.getValueForResolutionFunction=function(t){var e=Math.log(t||2),r=this.getConstrainedResolution(this.maxResolution_),n=this.minResolution_,i=Math.log(r/n)/e;return function(t){return Math.log(r/t)/e/i}},e.prototype.getViewportSizeMinusPadding_=function(t){var e=this.getViewportSize_(t),r=this.padding_;return r&&(e=[e[0]-r[1]-r[3],e[1]-r[0]-r[2]]),e},e.prototype.getState=function(){var t=this.getProjection(),e=this.getResolution(),r=this.getRotation(),n=this.getCenterInternal(),i=this.padding_;if(i){var o=this.getViewportSizeMinusPadding_();n=Ma(n,this.getViewportSize_(),[o[0]/2+i[3],o[1]/2+i[0]],e,r)}return{center:n.slice(0),projection:void 0!==t?t:null,resolution:e,nextCenter:this.nextCenter_,nextResolution:this.nextResolution_,nextRotation:this.nextRotation_,rotation:r,zoom:this.getZoom()}},e.prototype.getZoom=function(){var t,e=this.getResolution();return void 0!==e&&(t=this.getZoomForResolution(e)),t},e.prototype.getZoomForResolution=function(t){var e,r,n=this.minZoom_||0;if(this.resolutions_){var i=Object(h.h)(this.resolutions_,t,1);n=i,e=this.resolutions_[i],r=i==this.resolutions_.length-1?2:e/this.resolutions_[i+1]}else e=this.maxResolution_,r=this.zoomFactor_;return n+Math.log(e/t)/Math.log(r)},e.prototype.getResolutionForZoom=function(t){if(this.resolutions_){if(this.resolutions_.length<=1)return 0;var e=Object(mo.b)(Math.floor(t),0,this.resolutions_.length-2),r=this.resolutions_[e]/this.resolutions_[e+1];return this.resolutions_[e]/Math.pow(r,Object(mo.b)(t-e,0,1))}return this.maxResolution_/Math.pow(this.zoomFactor_,t-this.minZoom_)},e.prototype.fit=function(t,e){var r;if(Object(Ui.a)(Array.isArray(t)||"function"==typeof t.getSimplifiedGeometry,24),Array.isArray(t))Object(Ui.a)(!Object(mt.I)(t),25),r=Ia(n=Object(u.m)(t,this.getProjection()));else if(t.getType()===fo.a.CIRCLE){var n;(r=Ia(n=Object(u.m)(t.getExtent(),this.getProjection()))).rotate(this.getRotation(),Object(mt.x)(n))}else{var i=Object(u.s)();r=i?t.clone().transform(i,this.getProjection()):t}this.fitInternal(r,e)},e.prototype.rotatedExtentForGeometry=function(t){for(var e=this.getRotation(),r=Math.cos(e),n=Math.sin(-e),i=t.getFlatCoordinates(),o=t.getStride(),a=1/0,s=1/0,l=-1/0,u=-1/0,c=0,h=i.length;c=0;s--){var l=a[s];if(l.getMap()===this&&l.getActive()&&this.getTargetElement())if(!l.handleEvent(t)||t.propagationStopped)break}}},e.prototype.handlePostRender=function(){var t=this.frameState_,e=this.tileQueue_;if(!e.isEmpty()){var r=this.maxTilesLoading_,n=r;if(t){var i=t.viewHints;if(i[po.a.ANIMATING]||i[po.a.INTERACTING]){var o=Date.now()-t.time>8;r=o?0:8,n=o?0:2}}e.getTilesLoading()0;if(this.renderedVisible_!=r&&(this.element.style.display=r?"":"none",this.renderedVisible_=r),!Object(h.b)(e,this.renderedAttributions_)){Object(oi.d)(this.ulElement_);for(var n=0,i=e.length;n0&&e%(2*Math.PI)!=0?t.animate({rotation:0,duration:this.duration_,easing:So.easeOut}):t.setRotation(0))}},e.prototype.render=function(t){var e=t.frameState;if(e){var r=e.viewState.rotation;if(r!=this.rotation_){var n="rotate("+r+"rad)";if(this.autoHide_){var i=this.element.classList.contains(ti.c);i||0!==r?i&&0!==r&&this.element.classList.remove(ti.c):this.element.classList.add(ti.c)}this.label_.style.transform=n}this.rotation_=r}},e}(Ua),Ya=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Wa=function(t){function e(e){var r=this,n=e||{};r=t.call(this,{element:document.createElement("div"),target:n.target})||this;var i=void 0!==n.className?n.className:"ol-zoom",o=void 0!==n.delta?n.delta:1,a=void 0!==n.zoomInClassName?n.zoomInClassName:i+"-in",s=void 0!==n.zoomOutClassName?n.zoomOutClassName:i+"-out",l=void 0!==n.zoomInLabel?n.zoomInLabel:"+",u=void 0!==n.zoomOutLabel?n.zoomOutLabel:"–",c=void 0!==n.zoomInTipLabel?n.zoomInTipLabel:"Zoom in",h=void 0!==n.zoomOutTipLabel?n.zoomOutTipLabel:"Zoom out",f=document.createElement("button");f.className=a,f.setAttribute("type","button"),f.title=c,f.appendChild("string"==typeof l?document.createTextNode(l):l),f.addEventListener(Di.a.CLICK,r.handleClick_.bind(r,o),!1);var p=document.createElement("button");p.className=s,p.setAttribute("type","button"),p.title=h,p.appendChild("string"==typeof u?document.createTextNode(u):u),p.addEventListener(Di.a.CLICK,r.handleClick_.bind(r,-o),!1);var d=i+" "+ti.e+" "+ti.b,g=r.element;return g.className=d,g.appendChild(f),g.appendChild(p),r.duration_=void 0!==n.duration?n.duration:250,r}return Ya(e,t),e.prototype.handleClick_=function(t,e){e.preventDefault(),this.zoomByDelta_(t)},e.prototype.zoomByDelta_=function(t){var e=this.getMap().getView();if(e){var r=e.getZoom();if(void 0!==r){var n=e.getConstrainedZoom(r+t);this.duration_>0?(e.getAnimating()&&e.cancelAnimations(),e.animate({zoom:n,duration:this.duration_,easing:So.easeOut})):e.setZoom(n)}}},e}(Ua);function Xa(t){var e=t||{},r=new Fi;return(void 0===e.zoom||e.zoom)&&r.push(new Wa(e.zoomOptions)),(void 0===e.rotate||e.rotate)&&r.push(new qa(e.rotateOptions)),(void 0===e.attribution||e.attribution)&&r.push(new za(e.attributionOptions)),r}var Ha="active",Za=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function Ka(t,e,r,n){var i=t.getZoom();if(void 0!==i){var o=t.getConstrainedZoom(i+e),a=t.getResolutionForZoom(o);t.getAnimating()&&t.cancelAnimations(),t.animate({resolution:a,anchor:r,duration:void 0!==n?n:250,easing:So.easeOut})}}var Ja=function(t){function e(e){var r=t.call(this)||this;return r.on,r.once,r.un,e&&e.handleEvent&&(r.handleEvent=e.handleEvent),r.map_=null,r.setActive(!0),r}return Za(e,t),e.prototype.getActive=function(){return this.get(Ha)},e.prototype.getMap=function(){return this.map_},e.prototype.handleEvent=function(t){return!0},e.prototype.setActive=function(t){this.set(Ha,t)},e.prototype.setMap=function(t){this.map_=t},e}(ei.a),$a=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Qa=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.delta_=n.delta?n.delta:1,r.duration_=void 0!==n.duration?n.duration:250,r}return $a(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==Zi.DBLCLICK){var r=t.originalEvent,n=t.map,i=t.coordinate,o=r.shiftKey?-this.delta_:this.delta_;Ka(n.getView(),o,i,this.duration_),r.preventDefault(),e=!0}return!e},e}(Ja),ts=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function es(t){for(var e=t.length,r=0,n=0,i=0;i0}}else if(t.type==Zi.POINTERDOWN){var n=this.handleDownEvent(t);this.handlingDownUpSequence=n,e=this.stopDown(n)}else t.type==Zi.POINTERMOVE&&this.handleMoveEvent(t);return!e},e.prototype.handleMoveEvent=function(t){},e.prototype.handleUpEvent=function(t){return!1},e.prototype.stopDown=function(t){return t},e.prototype.updateTrackedPointers_=function(t){if(function(t){var e=t.type;return e===Zi.POINTERDOWN||e===Zi.POINTERDRAG||e===Zi.POINTERUP}(t)){var e=t.originalEvent,r=e.pointerId.toString();t.type==Zi.POINTERUP?delete this.trackedPointers_[r]:(t.type==Zi.POINTERDOWN||r in this.trackedPointers_)&&(this.trackedPointers_[r]=e),this.targetPointers=Object(ii.c)(this.trackedPointers_)}},e}(Ja);function ns(t){var e=arguments;return function(t){for(var r=!0,n=0,i=e.length;n0&&this.condition_(t)){var e=t.map.getView();return this.lastCentroid=null,e.getAnimating()&&e.cancelAnimations(),this.kinetic_&&this.kinetic_.begin(),this.noKinetic_=this.targetPointers.length>1,!0}return!1},e}(rs),vs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),bs=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this,{stopDown:Dn.a})||this).condition_=n.condition?n.condition:os,r.lastAngle_=void 0,r.duration_=void 0!==n.duration?n.duration:250,r}return vs(e,t),e.prototype.handleDragEvent=function(t){if(gs(t)){var e=t.map,r=e.getView();if(r.getConstraints().rotation!==Eo){var n=e.getSize(),i=t.pixel,o=Math.atan2(n[1]/2-i[1],i[0]-n[0]/2);if(void 0!==this.lastAngle_){var a=o-this.lastAngle_;r.adjustRotationInternal(-a)}this.lastAngle_=o}}},e.prototype.handleUpEvent=function(t){return!gs(t)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){return!!gs(t)&&(!(!us(t)||!this.condition_(t))&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,!0))},e}(rs),xs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ws=function(t){function e(e){var r=t.call(this)||this;return r.geometry_=null,r.element_=document.createElement("div"),r.element_.style.position="absolute",r.element_.style.pointerEvents="auto",r.element_.className="ol-box "+e,r.map_=null,r.startPixel_=null,r.endPixel_=null,r}return xs(e,t),e.prototype.disposeInternal=function(){this.setMap(null)},e.prototype.render_=function(){var t=this.startPixel_,e=this.endPixel_,r="px",n=this.element_.style;n.left=Math.min(t[0],e[0])+r,n.top=Math.min(t[1],e[1])+r,n.width=Math.abs(e[0]-t[0])+r,n.height=Math.abs(e[1]-t[1])+r},e.prototype.setMap=function(t){if(this.map_){this.map_.getOverlayContainer().removeChild(this.element_);var e=this.element_.style;e.left="inherit",e.top="inherit",e.width="inherit",e.height="inherit"}this.map_=t,this.map_&&this.map_.getOverlayContainer().appendChild(this.element_)},e.prototype.setPixels=function(t,e){this.startPixel_=t,this.endPixel_=e,this.createOrUpdateGeometry(),this.render_()},e.prototype.createOrUpdateGeometry=function(){var t=this.startPixel_,e=this.endPixel_,r=[t,[t[0],e[1]],e,[e[0],t[1]]].map(this.map_.getCoordinateFromPixelInternal,this.map_);r[4]=r[0].slice(),this.geometry_?this.geometry_.setCoordinates([r]):this.geometry_=new Oa([r])},e.prototype.getGeometry=function(){return this.geometry_},e}(Fn.a),Es=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Os="boxstart",Ss="boxdrag",Is="boxend",Cs="boxcancel",Ts=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.coordinate=r,i.mapBrowserEvent=n,i}return Es(e,t),e}(Ni.a),Ps=function(t){function e(e){var r=t.call(this)||this;r.on,r.once,r.un;var n=e||{};return r.box_=new ws(n.className||"ol-dragbox"),r.minArea_=void 0!==n.minArea?n.minArea:64,n.onBoxEnd&&(r.onBoxEnd=n.onBoxEnd),r.startPixel_=null,r.condition_=n.condition?n.condition:us,r.boxEndCondition_=n.boxEndCondition?n.boxEndCondition:r.defaultBoxEndCondition,r}return Es(e,t),e.prototype.defaultBoxEndCondition=function(t,e,r){var n=r[0]-e[0],i=r[1]-e[1];return n*n+i*i>=this.minArea_},e.prototype.getGeometry=function(){return this.box_.getGeometry()},e.prototype.handleDragEvent=function(t){this.box_.setPixels(this.startPixel_,t.pixel),this.dispatchEvent(new Ts(Ss,t.coordinate,t))},e.prototype.handleUpEvent=function(t){this.box_.setMap(null);var e=this.boxEndCondition_(t,this.startPixel_,t.pixel);return e&&this.onBoxEnd(t),this.dispatchEvent(new Ts(e?Is:Cs,t.coordinate,t)),!1},e.prototype.handleDownEvent=function(t){return!!this.condition_(t)&&(this.startPixel_=t.pixel,this.box_.setMap(t.map),this.box_.setPixels(this.startPixel_,this.startPixel_),this.dispatchEvent(new Ts(Os,t.coordinate,t)),!0)},e.prototype.onBoxEnd=function(t){},e}(rs),Rs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ls=function(t){function e(e){var r=this,n=e||{},i=n.condition?n.condition:ps;return(r=t.call(this,{condition:i,className:n.className||"ol-dragzoom",minArea:n.minArea})||this).duration_=void 0!==n.duration?n.duration:200,r.out_=void 0!==n.out&&n.out,r}return Rs(e,t),e.prototype.onBoxEnd=function(t){var e=this.getMap().getView(),r=this.getGeometry();if(this.out_){var n=e.rotatedExtentForGeometry(r),i=e.getResolutionForExtentInternal(n),o=e.getResolution()/i;(r=r.clone()).scale(o*o)}e.fitInternal(r,{duration:this.duration_,easing:So.easeOut})},e}(Ps),Ms=37,Ns=38,As=39,ks=40,js=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Fs=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.defaultCondition_=function(t){return fs(t)&&ds(t)},r.condition_=void 0!==n.condition?n.condition:r.defaultCondition_,r.duration_=void 0!==n.duration?n.duration:100,r.pixelDelta_=void 0!==n.pixelDelta?n.pixelDelta:128,r}return js(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==Di.a.KEYDOWN){var r=t.originalEvent,n=r.keyCode;if(this.condition_(t)&&(n==ks||n==Ms||n==As||n==Ns)){var i=t.map.getView(),o=i.getResolution()*this.pixelDelta_,a=0,s=0;n==ks?s=-o:n==Ms?a=-o:n==As?a=o:s=o;var l=[a,s];Object(Wn.j)(l,i.getRotation()),function(t,e,r){var n=t.getCenterInternal();if(n){var i=[n[0]+e[0],n[1]+e[1]];t.animateInternal({duration:void 0!==r?r:250,easing:So.linear,center:t.getConstrainedCenter(i)})}}(i,l,this.duration_),r.preventDefault(),e=!0}}return!e},e}(Ja),Ds=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Gs=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.condition_=n.condition?n.condition:ds,r.delta_=n.delta?n.delta:1,r.duration_=void 0!==n.duration?n.duration:100,r}return Ds(e,t),e.prototype.handleEvent=function(t){var e=!1;if(t.type==Di.a.KEYDOWN||t.type==Di.a.KEYPRESS){var r=t.originalEvent,n=r.charCode;if(this.condition_(t)&&(n=="+".charCodeAt(0)||n=="-".charCodeAt(0))){var i=t.map,o=n=="+".charCodeAt(0)?this.delta_:-this.delta_;Ka(i.getView(),o,void 0,this.duration_),r.preventDefault(),e=!0}}return!e},e}(Ja),Us=function(){function t(t,e,r){this.decay_=t,this.minVelocity_=e,this.delay_=r,this.points_=[],this.angle_=0,this.initialVelocity_=0}return t.prototype.begin=function(){this.points_.length=0,this.angle_=0,this.initialVelocity_=0},t.prototype.update=function(t,e){this.points_.push(t,e,Date.now())},t.prototype.end=function(){if(this.points_.length<6)return!1;var t=Date.now()-this.delay_,e=this.points_.length-3;if(this.points_[e+2]0&&this.points_[r+2]>t;)r-=3;var n=this.points_[e+2]-this.points_[r+2];if(n<1e3/60)return!1;var i=this.points_[e]-this.points_[r],o=this.points_[e+1]-this.points_[r+1];return this.angle_=Math.atan2(o,i),this.initialVelocity_=Math.sqrt(i*i+o*o)/n,this.initialVelocity_>this.minVelocity_},t.prototype.getDistance=function(){return(this.minVelocity_-this.initialVelocity_)/this.decay_},t.prototype.getAngle=function(){return this.angle_},t}(),Bs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),zs="trackpad",Vs="wheel",qs=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,n)||this).totalDelta_=0,r.lastDelta_=0,r.maxDelta_=void 0!==n.maxDelta?n.maxDelta:1,r.duration_=void 0!==n.duration?n.duration:250,r.timeout_=void 0!==n.timeout?n.timeout:80,r.useAnchor_=void 0===n.useAnchor||n.useAnchor,r.constrainResolution_=void 0!==n.constrainResolution&&n.constrainResolution;var i=n.condition?n.condition:ls;return r.condition_=n.onFocusOnly?ns(ss,i):i,r.lastAnchor_=null,r.startTime_=void 0,r.timeoutId_,r.mode_=void 0,r.trackpadEventGap_=400,r.trackpadTimeoutId_,r.deltaPerZoom_=300,r}return Bs(e,t),e.prototype.endInteraction_=function(){this.trackpadTimeoutId_=void 0,this.getMap().getView().endInteraction(void 0,this.lastDelta_?this.lastDelta_>0?1:-1:0,this.lastAnchor_)},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;if(t.type!==Di.a.WHEEL)return!0;var e,r=t.map,n=t.originalEvent;if(n.preventDefault(),this.useAnchor_&&(this.lastAnchor_=t.coordinate),t.type==Di.a.WHEEL&&(e=n.deltaY,ni.b&&n.deltaMode===WheelEvent.DOM_DELTA_PIXEL&&(e/=ni.a),n.deltaMode===WheelEvent.DOM_DELTA_LINE&&(e*=40)),0===e)return!1;this.lastDelta_=e;var i=Date.now();void 0===this.startTime_&&(this.startTime_=i),(!this.mode_||i-this.startTime_>this.trackpadEventGap_)&&(this.mode_=Math.abs(e)<4?zs:Vs);var o=r.getView();if(this.mode_===zs&&!o.getConstrainResolution()&&!this.constrainResolution_)return this.trackpadTimeoutId_?clearTimeout(this.trackpadTimeoutId_):(o.getAnimating()&&o.cancelAnimations(),o.beginInteraction()),this.trackpadTimeoutId_=setTimeout(this.endInteraction_.bind(this),this.timeout_),o.adjustZoom(-e/this.deltaPerZoom_,this.lastAnchor_),this.startTime_=i,!1;this.totalDelta_+=e;var a=Math.max(this.timeout_-(i-this.startTime_),0);return clearTimeout(this.timeoutId_),this.timeoutId_=setTimeout(this.handleWheelZoom_.bind(this,r),a),!1},e.prototype.handleWheelZoom_=function(t){var e=t.getView();e.getAnimating()&&e.cancelAnimations();var r=-Object(mo.b)(this.totalDelta_,-this.maxDelta_*this.deltaPerZoom_,this.maxDelta_*this.deltaPerZoom_)/this.deltaPerZoom_;(e.getConstrainResolution()||this.constrainResolution_)&&(r=r?r>0?1:-1:0),Ka(e,r,this.lastAnchor_,this.duration_),this.mode_=void 0,this.totalDelta_=0,this.lastAnchor_=null,this.startTime_=void 0,this.timeoutId_=void 0},e.prototype.setMouseAnchor=function(t){this.useAnchor_=t,t||(this.lastAnchor_=null)},e}(Ja),Ys=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ws=function(t){function e(e){var r=this,n=e||{},i=n;return i.stopDown||(i.stopDown=Dn.a),(r=t.call(this,i)||this).anchor_=null,r.lastAngle_=void 0,r.rotating_=!1,r.rotationDelta_=0,r.threshold_=void 0!==n.threshold?n.threshold:.3,r.duration_=void 0!==n.duration?n.duration:250,r}return Ys(e,t),e.prototype.handleDragEvent=function(t){var e=0,r=this.targetPointers[0],n=this.targetPointers[1],i=Math.atan2(n.clientY-r.clientY,n.clientX-r.clientX);if(void 0!==this.lastAngle_){var o=i-this.lastAngle_;this.rotationDelta_+=o,!this.rotating_&&Math.abs(this.rotationDelta_)>this.threshold_&&(this.rotating_=!0),e=o}this.lastAngle_=i;var a=t.map,s=a.getView();if(s.getConstraints().rotation!==Eo){var l=a.getViewport().getBoundingClientRect(),u=es(this.targetPointers);u[0]-=l.left,u[1]-=l.top,this.anchor_=a.getCoordinateFromPixelInternal(u),this.rotating_&&(a.render(),s.adjustRotationInternal(e,this.anchor_))}},e.prototype.handleUpEvent=function(t){return!(this.targetPointers.length<2)||(t.map.getView().endInteraction(this.duration_),!1)},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastAngle_=void 0,this.rotating_=!1,this.rotationDelta_=0,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(rs),Xs=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Hs=function(t){function e(e){var r=this,n=e||{},i=n;return i.stopDown||(i.stopDown=Dn.a),(r=t.call(this,i)||this).anchor_=null,r.duration_=void 0!==n.duration?n.duration:400,r.lastDistance_=void 0,r.lastScaleDelta_=1,r}return Xs(e,t),e.prototype.handleDragEvent=function(t){var e=1,r=this.targetPointers[0],n=this.targetPointers[1],i=r.clientX-n.clientX,o=r.clientY-n.clientY,a=Math.sqrt(i*i+o*o);void 0!==this.lastDistance_&&(e=this.lastDistance_/a),this.lastDistance_=a;var s=t.map,l=s.getView();1!=e&&(this.lastScaleDelta_=e);var u=s.getViewport().getBoundingClientRect(),c=es(this.targetPointers);c[0]-=u.left,c[1]-=u.top,this.anchor_=s.getCoordinateFromPixelInternal(c),s.render(),l.adjustResolutionInternal(e,this.anchor_)},e.prototype.handleUpEvent=function(t){if(this.targetPointers.length<2){var e=t.map.getView(),r=this.lastScaleDelta_>1?1:-1;return e.endInteraction(this.duration_,r),!1}return!0},e.prototype.handleDownEvent=function(t){if(this.targetPointers.length>=2){var e=t.map;return this.anchor_=null,this.lastDistance_=void 0,this.lastScaleDelta_=1,this.handlingDownUpSequence||e.getView().beginInteraction(),!0}return!1},e}(rs);function Zs(t){var e=t||{},r=new Fi,n=new Us(-.005,.05,100);return(void 0===e.altShiftDragRotate||e.altShiftDragRotate)&&r.push(new bs),(void 0===e.doubleClickZoom||e.doubleClickZoom)&&r.push(new Qa({delta:e.zoomDelta,duration:e.zoomDuration})),(void 0===e.dragPan||e.dragPan)&&r.push(new _s({onFocusOnly:e.onFocusOnly,kinetic:n})),(void 0===e.pinchRotate||e.pinchRotate)&&r.push(new Ws),(void 0===e.pinchZoom||e.pinchZoom)&&r.push(new Hs({duration:e.zoomDuration})),(void 0===e.keyboard||e.keyboard)&&(r.push(new Fs),r.push(new Gs({delta:e.zoomDelta,duration:e.zoomDuration}))),(void 0===e.mouseWheelZoom||e.mouseWheelZoom)&&r.push(new qs({onFocusOnly:e.onFocusOnly,duration:e.zoomDuration})),(void 0===e.shiftDragZoom||e.shiftDragZoom)&&r.push(new Ls({duration:e.zoomDuration})),r}var Ks=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Js=function(t){function e(e){return(e=Object(ii.a)({},e)).controls||(e.controls=Xa()),e.interactions||(e.interactions=Zs({onFocusOnly:!0})),t.call(this,e)||this}return Ks(e,t),e.prototype.createRenderer=function(){return new Pi(this)},e}(Da);function $s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Qs(t,e){for(var r=0;r2&&void 0!==arguments[2]&&arguments[2];$s(this,t),this._listener=e,this._scope=r,this.eventKey_=CD(),this.once_=n}var e,r,n;return e=t,(r=[{key:"fire",value:function(t){var e=t;mD(e)||(e=[e]),this._listener.apply(this._scope,e)}},{key:"getEventKey",value:function(){return this.eventKey_}},{key:"isOnce",value:function(){return this.once_}},{key:"has",value:function(t,e){var r=!1;return r=vD(t)?this._listener===t&&this._scope===e:this.eventKey_===t,r}}])&&Qs(e.prototype,r),n&&Qs(e,n),t}();function el(t,e){for(var r=0;r3&&void 0!==arguments[3]&&arguments[3];if(!_D(t)&&vD(e)&&(_D(this.events_[t])&&(this.events_[t]=[]),-1===this.indexOf(t,e,r))){var o=new tl(e,r,i);this.events_[t].push(o),n=o.getEventKey()}return n}},{key:"remove",value:function(t,e,r){var n=this.events_[t];if(!_D(n)){var i=this.indexOf(t,e,r);-1!==i&&n.splice(i,1)}}},{key:"removeByKey",value:function(t,e){var r=this.events_[t];if(!_D(r)){var n=r.map((function(t,r){var n=-1;return t.getEventKey()===e&&(n=r),n}));-1!==n&&r.splice(n,1)}}},{key:"fire",value:function(t,e){var r=this,n=[].concat(this.events_[t]);_D(n)||n.forEach((function(n){n.fire(e),!0===n.isOnce()&&r.remove(t,n.getEventKey())}))}},{key:"indexOf",value:function(t,e,r){var n=-1,i=this.events_[t];if(!_D(i))for(var o=0,a=i.length;or?(this.direction_=ul,this.widthLimit_=e-a):(this.direction_=ll,this.heightLimit_=r-s),this.sliderInitialized_=!0},e.prototype.handleContainerClick_=function(t){var e=this.getMap().getView(),r=this.getRelativePosition_(t.offsetX-this.thumbSize_[0]/2,t.offsetY-this.thumbSize_[1]/2),n=this.getResolutionForPosition_(r),i=e.getConstrainedZoom(e.getZoomForResolution(n));e.animateInternal({zoom:i,duration:this.duration_,easing:So.easeOut})},e.prototype.handleDraggerStart_=function(t){if(!this.dragging_&&t.target===this.element.firstElementChild){var e=this.element.firstElementChild;if(this.getMap().getView().beginInteraction(),this.startX_=t.clientX-parseFloat(e.style.left),this.startY_=t.clientY-parseFloat(e.style.top),this.dragging_=!0,0===this.dragListenerKeys_.length){var r=this.handleDraggerDrag_,n=this.handleDraggerEnd_,i=this.getMap().getOwnerDocument();this.dragListenerKeys_.push(Object(Ci.a)(i,Ki,r,this),Object(Ci.a)(i,$i,n,this))}}},e.prototype.handleDraggerDrag_=function(t){if(this.dragging_){var e=t.clientX-this.startX_,r=t.clientY-this.startY_,n=this.getRelativePosition_(e,r);this.currentResolution_=this.getResolutionForPosition_(n),this.getMap().getView().setResolution(this.currentResolution_)}},e.prototype.handleDraggerEnd_=function(t){this.dragging_&&(this.getMap().getView().endInteraction(),this.dragging_=!1,this.startX_=void 0,this.startY_=void 0,this.dragListenerKeys_.forEach(Ci.c),this.dragListenerKeys_.length=0)},e.prototype.setThumbPosition_=function(t){var e=this.getPositionForResolution_(t),r=this.element.firstElementChild;this.direction_==ul?r.style.left=this.widthLimit_*e+"px":r.style.top=this.heightLimit_*e+"px"},e.prototype.getRelativePosition_=function(t,e){var r;return r=this.direction_===ul?t/this.widthLimit_:e/this.heightLimit_,Object(mo.b)(r,0,1)},e.prototype.getResolutionForPosition_=function(t){return this.getMap().getView().getResolutionForValueFunction()(1-t)},e.prototype.getPositionForResolution_=function(t){var e=this.getMap().getView().getValueForResolutionFunction();return Object(mo.b)(1-e(t),0,1)},e.prototype.render=function(t){if(t.frameState&&(this.sliderInitialized_||this.initSlider_())){var e=t.frameState.viewState.resolution;this.currentResolution_=e,this.setThumbPosition_(e)}},e}(Ua);function hl(t){return(hl="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function fl(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:su.lang;return lu(e)[t]};function cu(t){return(cu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function hu(t,e){for(var r=0;re?r.fn(this):r.inverse(this)})),_u.a.registerHelper("lt",(function(t,e,r){return t0&&void 0!==arguments[0]?arguments[0]:{};Eu(this,o);var r=new ml(e);return t=i.call(this,r,o.NAME),dD(ml)&&_l(uu("exception").panzoombar_method),t}return e=o,(r=[{key:"createView",value:function(t){return bu(al.a)}},{key:"equals",value:function(t){var e=t instanceof o;return e}}])&&Ou(e.prototype,r),n&&Ou(e,n),o}(yu);Pu.NAME="panzoombar";var Ru=Pu,Lu="WMC",Mu="KML",Nu="WMS",Au="WFS",ku="WMTS",ju="OSM",Fu="Mapbox",Du="GeoJSON",Gu="Vector",Uu="MVT",Bu={WMC:Lu,KML:Mu,WMS:Nu,WFS:Au,WMTS:ku,OSM:ju,Mapbox:Fu,GeoJSON:Du,Vector:Gu,MVT:Uu},zu=function(t){var e=OD(t,!0);return e="WMS_FULL"===e?Nu:"WFST"===e?Au:Object.keys(Bu).find((function(t){var r=Bu[t];return xD(r)&&OD(r,!0)===e})),Bu[e]},Vu=function(t){return-1!==[Lu,Mu,Nu,Au,ku,Uu].indexOf(zu(t))};function qu(t){return(qu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Yu=/WMS\*.*/,Wu=/WMS_FULL\*.*/,Xu=function(t){var e=t.parameter,r=t.attr,n=t.type,i=t.separator,o=t.normalized,a=void 0!==o&&o;return function(t,o){var s,l={boolean:function(t){return/^1|(true)$/i.test(t)},string:function(t){return t},int:function(t){return Number.parseInt(t,10)},float:function(t){return Number.parseFloat(t,10)},array_number:function(t){return t.split(i||"").map((function(t){return t.trim()})).map((function(t){return Number.parseFloat(t)}))},array_string:function(t){return t.split(i).map((function(t){return t.trim()})).map((function(t){return String(t)}))}};if(xD(e)&&t.test(e)){var u=e.split("*")[o];_D(u)||(s=l[n](u))}else bD(e)?s=e[r]:_l("El parámetro no es de un tipo soportado: ".concat(qu(e)));return xD(s)&&(s=s.trim()),!0===a&&(s=OD(s)),s}},Hu=function(t){var e=[];_D(t)&&_l(uu("exception").no_param);var r=t;return mD(r)||(r=[r]),e=r.map((function(t){var e=Xu({parameter:t,type:"string",attr:"name"}),r=Xu({parameter:t,type:"string",attr:"url"}),n=Xu({parameter:t,type:"string",attr:"legend"}),i=Xu({parameter:t,type:"boolean",attr:"transparent"}),o=Xu({parameter:t,type:"boolean",attr:"tiled"}),a=Xu({parameter:t,type:"array_number",attr:"maxExtent",separator:"_"}),s=Xu({parameter:t,type:"string",attr:"version"}),l=Xu({parameter:t,type:"array_string",attr:"styles",separator:"%"});return Yu.test(t)||bD(t)?{type:"WMS",name:e(Yu,3),tiled:o(Yu,5),url:r(Yu,2),legend:n(Yu,1),transparent:i(Yu,4),maxExtent:a(Yu,6),version:s(Yu,7),styles:l(Yu,8)}:{type:"WMS",url:r(Wu,1)}})),mD(t)||(e=e[0]),e};function Zu(t){return(Zu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Ku=/KML\*.*/,Ju=function(t){var e=t.parameter,r=t.attr,n=t.type,i=t.valueCmp,o=void 0===i?/^1|true/i:i,a=t.separator,s=t.normalized,l=void 0!==s&&s;return function(t,i){var s,u={boolean:function(t){return o.test(t)},boolean_eql:function(t){return void 0===t||"true"===t},string:function(t){return t},int:function(t){return Number.parseInt(t,10)},float:function(t){return Number.parseFloat(t,10)},array_number:function(t){return t.split(a||"").map((function(t){return t.trim()})).map((function(t){return Number.parseFloat(t)}))}};if(xD(e)&&t.test(e)){var c=e.split("*"),h=c[i];s=u[n](h),"extract"===r&&(s="false"!==(h=c.slice(-2,-1)[0])),"label"===r&&(s="false"!==(h=c.slice(-1)[0])),"url"!==r||"true"!==s&&"false"!==s&&void 0!==s||(s="")}else bD(e)?s=e[r]:_l("El parámetro no es de un tipo soportado: ".concat(Zu(e)));return xD(s)&&(s=s.trim()),!0===l&&(s=OD(s)),s}},$u=function(t){var e=t,r=[];_D(e)&&_l(uu("exception").no_param);var n=e;return mD(n)||(n=[n]),r=n.map((function(t){var e=Ju({parameter:t,type:"string",attr:"name"}),r=Ju({parameter:t,type:"string",attr:"url"}),n=Ju({parameter:t,type:"boolean",attr:"extract"}),i=Ju({parameter:t,type:"boolean_eql",attr:"label"});return Ku.test(t)?{type:Mu,name:e(Ku,1),url:r(Ku,2)+r(Ku,3),extract:n(Ku,4),label:i(Ku,5)}:{type:Mu,name:e(Ku),url:r(Ku),extract:n(Ku),label:i(Ku)}})),mD(e)||(r=r[0]),r};function Qu(t){return(Qu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var tc=/MAPBOX\*.*/,ec=function(t){var e=t.parameter,r=t.attr,n=t.type,i=t.separator,o=t.normalized,a=void 0!==o&&o;return function(t,o){var s,l={boolean:function(t){return/^1|(true)$/i.test(t)},string:function(t){return t},int:function(t){return Number.parseInt(t,10)},float:function(t){return Number.parseFloat(t,10)},array_number:function(t){return t.split(i||"").map((function(t){return t.trim()})).map((function(t){return Number.parseFloat(t)}))}};if(xD(e)&&t.test(e)){var u=e.split("*")[o];_D(u)||(s=l[n](u))}else bD(e)?s=e[r]:_l("El parámetro no es de un tipo soportado: ".concat(Qu(e)));return xD(s)&&(s=s.trim()),!0===a&&(s=OD(s)),s}},rc=function(t){var e=[];_D(t)&&_l(uu("exception").no_param);var r=t;return mD(r)||(r=[r]),e=r.map((function(t){var e=ec({parameter:t,type:"string",attr:"name"})(tc,1),r=ec({parameter:t,type:"string",attr:"legend"})(tc,3),n=ec({parameter:t,type:"boolean",attr:"transparent"})(tc,2),i=function(t){var e;return xD(t)?e=null:bD(t)&&!_D(t.accessToken)?e=t.accessToken.trim():bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(Qu(t))),e}(t);return{type:Fu,name:e,legend:r,transparent:n,accessToken:i}})),mD(t)||(e=e[0]),e};function nc(t){return(nc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var ic=/OSM\.*/,oc=function(t){var e=t.parameter,r=t.attr,n=t.type,i=t.separator,o=t.normalized,a=void 0!==o&&o;return function(t,o){var s,l={boolean:function(t){return/^1|(true)$/i.test(t)},string:function(t){return t},int:function(t){return Number.parseInt(t,10)},float:function(t){return Number.parseFloat(t,10)},array_number:function(t){return t.split(i||"").map((function(t){return t.trim()})).map((function(t){return Number.parseFloat(t)}))}};if(xD(e)&&t.test(e)){var u=e.split("*")[o];_D(u)||(s=l[n](u))}else bD(e)?s=e[r]:_l("El parámetro no es de un tipo soportado: ".concat(nc(e)));return xD(s)&&(s=s.trim()),!0===a&&(s=OD(s)),s}},ac=function(t){var e=t,r=[];_D(e)&&(e={type:ju,name:"osm"});var n=e;return mD(n)||(n=[n]),r=n.map((function(t){return{type:"OSM",name:oc({parameter:t,type:"string",attr:"name"})(ic,3),transparent:oc({parameter:t,type:"boolean",attr:"transparent"})(ic,1),legend:oc({parameter:t,type:"string",attr:"legend"})(ic,2)}})),mD(e)||(r=r[0]),r};function sc(t){return(sc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var lc=/^GeoJSON(T)?\*.*/,uc=function(t){var e=t.parameter,r=t.attr,n=t.type,i=t.separator,o=t.normalized,a=void 0!==o&&o;return function(t,o){var s,l={boolean:function(t){return/^1|(true)$/i.test(t)},string:function(t){return t},int:function(t){return Number.parseInt(t,10)},float:function(t){return Number.parseFloat(t,10)},array_number:function(t){return t.split(i||"").map((function(t){return t.trim()})).map((function(t){return Number.parseFloat(t)}))}};if(xD(e)&&t.test(e)){var u=e.split("*")[o];_D(u)||(s=l[n](u))}else bD(e)?s=e[r]:_l("El parámetro no es de un tipo soportado: ".concat(sc(e)));return xD(s)&&(s=s.trim()),!0===a&&(s=OD(s)),s}},cc=function(t){var e=[];_D(t)&&_l(uu("exception").no_param);var r=t;return mD(r)||(r=[r]),e=r.map((function(t){return{type:"GeoJSON",name:uc({parameter:t,type:"string",attr:"name"})(lc,1),url:uc({parameter:t,type:"string",attr:"name"})(lc,2),extract:uc({parameter:t,type:"boolean",attr:"extract"})(lc,3),style:uc({parameter:t,type:"string",attr:"style"})(lc,4)}})),mD(t)||(e=e[0]),e};function hc(t){return(hc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var fc=function(t){var e=[];_D(t)&&_l(uu("exception").no_param);var r=t;return mD(r)||(r=[r]),e=r.map((function(t){var e,r,n={};return n.type=Lu,n.name=(xD(e=t)?/^\w{3,7}\*[^*]+\*[^*]+$/.test(e)?r=e.split(/\*/)[2].trim():/^\w{3,7}\*[^*]$/.test(e)||/^[^*]+\*[^*]+$/.test(e)?r=e.split(/\*/)[1].trim():/^[^*]+$/.test(e)&&!wD(e)&&(r=e):bD(e)?r=OD(e.name):_l("El parámetro no es de un tipo soportado: ".concat(hc(e))),wD(r)&&(r=null),r),n.url=function(t){var e;if(xD(t)){var r=t.match(/^([^*]*\*)*(https?:\/\/[^*]+)([^*]*\*?)*$/i);r&&r.length>2&&(e=r[2])}else bD(t)?e=t.url:_l("El parámetro no es de un tipo soportado: ".concat(hc(t)));return e}(t),n.options=function(t){var e;return xD(t)||(bD(t)?e=t.options:_l("El parámetro no es de un tipo soportado: ".concat(hc(t)))),e}(t),n})),mD(t)||(e=e[0]),e};function pc(t){return(pc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var dc=function(t){var e=t,r={};if(_D(e)&&_l(uu("exception").no_center),xD(e))if(e=OD(e),/^-?\d+(\.\d+)?[,;]-?\d+(\.\d+)?([*](true|false))?$/i.test(e)){var n=e.split(/\*/),i=n[0],o=n[1],a=i.split(/[,;]+/);2===a.length?(r.x=Number.parseFloat(a[0]),r.y=Number.parseFloat(a[1])):_l(uu("exception").invalid_center_param),r.draw=/^1|(true)$/i.test(o)}else _l(uu("exception").invalid_center_param);else mD(e)?2===e.length||3===e.length?(xD(e[0])&&(e[0]=Number.parseFloat(e[0])),xD(e[1])&&(e[1]=Number.parseFloat(e[1])),r.x=e[0],r.y=e[1]):_l(uu("exception").invalid_center_param):bD(e)?(yD(e.x)?_l(uu("exception").invalid_center_param):(xD(e.x)&&(e.x=Number.parseFloat(e.x)),r.x=e.x),yD(e.y)?_l(uu("exception").invalid_center_param):(xD(e.y)&&(e.y=Number.parseFloat(e.y)),r.y=e.y),yD(e.draw)?r.draw=!1:r.draw=/^true$/.test(e.draw)):_l("El parámetro no es de un tipo soportado: ".concat("undefined"==typeof maxExtentParameter?"undefined":pc(maxExtentParameter)));return(Number.isNaN(r.x)||Number.isNaN(r.y))&&_l(uu("exception").invalid_center_param),r},gc=function(t){var e,r=t;if(!_D(r)){if(e={x:{},y:{}},_D(r)&&_l(uu("exception").no_maxextent),xD(r))if(/^\s*-?\d+(\.\d+)?\s*[,;]\s*-?\d+(\.\d+)?\s*[,;]\s*-?\d+(\.\d+)?\s*[,;]\s*-?\d+(\.\d+)?$/.test(r)){var n=r.split(/[,;]+/);4===n.length?(e.x.min=Number.parseFloat(n[0]),e.y.min=Number.parseFloat(n[1]),e.x.max=Number.parseFloat(n[2]),e.y.max=Number.parseFloat(n[3])):_l(uu("exception").invalid_maxextent_param)}else _l(uu("exception").invalid_maxextent_param);else mD(r)?4===r.length?(xD(r[0])&&(r[0]=Number.parseFloat(r[0])),xD(r[1])&&(r[1]=Number.parseFloat(r[1])),xD(r[2])&&(r[2]=Number.parseFloat(r[2])),xD(r[3])&&(r[3]=Number.parseFloat(r[3])),e.x.min=r[0],e.y.min=r[1],e.x.max=r[2],e.y.max=r[3]):_l(uu("exception").invalid_maxextent_param):bD(r)?(yD(r.left)?yD(r.x.min)?_l(uu("exception").invalid_maxextent_param):(xD(r.x.min)&&(r.x.min=Number.parseFloat(r.x.min)),e.x.min=r.x.min):(xD(r.left)&&(r.left=Number.parseFloat(r.left)),e.x.min=r.left),yD(r.bottom)?yD(r.y.min)?_l(uu("exception").invalid_maxextent_param):(xD(r.y.min)&&(r.y.min=Number.parseFloat(r.y.min)),e.y.min=r.y.min):(xD(r.bottom)&&(r.bottom=Number.parseFloat(r.bottom)),e.y.min=r.bottom),yD(r.right)?yD(r.x.max)?_l(uu("exception").invalid_maxextent_param):(xD(r.x.max)&&(r.x.max=Number.parseFloat(r.x.max)),e.x.max=r.x.max):(xD(r.right)&&(r.right=Number.parseFloat(r.right)),e.x.max=r.right),yD(r.top)?yD(r.y.max)?_l(uu("exception").invalid_maxextent_param):(xD(r.y.max)&&(r.y.max=Number.parseFloat(r.y.max)),e.y.max=r.y.max):(xD(r.top)&&(r.top=Number.parseFloat(r.top)),e.y.max=r.top)):_l("El parámetro no es de un tipo soportado: ".concat(pc(r)));(Number.isNaN(e.x.min)||Number.isNaN(e.y.min)||Number.isNaN(e.x.max)||Number.isNaN(e.y.max))&&_l(uu("exception").invalid_maxextent_param)}return e},yc=function(t){var e={code:null,units:null};if(_D(t)&&_l(uu("exception").no_projection),xD(t))if(/^(EPSG:)?\d+\*((d(egrees)?)|(m(eters)?))$/i.test(t)){var r=t.split(/\*/);e.code=r[0],e.units=OD(r[1].substring(0,1))}else _l("El formato del parámetro projection no es correcto.
    Se usará la proyección por defecto: ".concat(M.config.DEFAULT_PROJ));else bD(t)?yD(t.code)||yD(t.units)?_l("El formato del parámetro projection no es correcto.
    Se usará la proyección por defecto: ".concat(M.config.DEFAULT_PROJ)):(e.code=t.code,e.units=OD(t.units.substring(0,1))):_l("El parámetro no es de un tipo soportado: ".concat(pc(t)));return"m"!==e.units&&"d"!==e.units&&_l('La unidad "'.concat(t.units,'" del parámetro projection no es válida. Las disponibles son: "m" o "d"')),e},mc=function(t){var e=t,r=[];_D(e)&&_l(uu("exception").no_resolutions),xD(e)&&(/^\d+(\.\d+)?([,;]\d+(\.\d+)?)*$/.test(e)?e=e.split(/[,;]+/):_l(uu("exception").invalid_resolutions_param)),mD(e)?r=e.map((function(t){return xD(t)?Number.parseFloat(t):t})):_l("El parámetro no es de un tipo soportado: ".concat(pc(e)));for(var n=!0,i=0,o=r.length;i2&&(e=r[2])}else bD(t)?e=t.url:_l("El parámetro no es de un tipo soportado: ".concat(pc(t)));return e}(e),i.namespace=function(t){var e;return xD(t)?/^WFS(T)?\*.+/i.test(t)?/^WFS(T)?\*[^*]*\*[^*]+\*[^*]+:[^*]+/i.test(t)&&(e=t.split(/\*/)[3].trim().split(":")[0]):/^[^*]*\*[^*]+:[^*]+/.test(t)&&(e=t.split(/\*/)[1].trim().split(":")[0]):bD(t)&&!_D(t.namespace)?e=t.namespace.trim():bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t))),(wD(e)||/^(true|false)$/i.test(e))&&(e=null),e}(e),i.legend=function(t){var e;return xD(t)?/^WFS(T)?\*[^*]/i.test(t)?e=t.split(/\*/)[1].trim():/^[^*]+\*[^*]+:[^*]+\*[^*]+/.test(t)&&(e=t.split(/\*/)[2].trim()):bD(t)&&!_D(t.legend)?e=t.legend.trim():bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t))),(wD(e)||/^(true|false)$/i.test(e))&&(e=null),e}(e),i.cql=function(t){var e;return xD(t)?(/^[^*]+\*[^*]+:[^*]+\*[^*]+\*[^*]+/i.test(t)&&(e=t.split(/\*/)[3].trim()),/^WFS(T)?\*[^*]*\*[^*]+\*[^*]+:[^*]+\*[^*]+\*[^*]*\*[^*]*/i.test(t)&&(e=t.split(/\*/)[6].trim())):bD(t)&&!_D(t.cql)||!_D(t.ecql)?e=t.cql?t.cql.trim():t.ecql.trim():bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t))),(/^(true|false)$/i.test(e)||/^\d\.\d\.\d$/.test(e))&&(e=void 0),e}(e),i.geometry=function(t){var e;return xD(t)?/^WFS(T)?\*.+/i.test(t)&&(/^WFS(T)?\*[^*]*\*[^*]+\*[^*]+:[^*]+\*[^*]+/i.test(t)||/^WFS(T)?\*[^*]*\*[^*][^*]+\*[^*]+/i.test(t))&&(e=t.split(/\*/)[4].trim()):bD(t)&&!_D(t.geometry)?e=t.geometry.trim():bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t))),(wD(e)||/^(true|false)$/i.test(e))&&(e=null),e}(e),i.ids=function(t){var e;return xD(t)?/^WFS(T)?\*.+/i.test(t)&&(/^WFS(T)?\*[^*]*\*[^*]+\*[^*]+:[^*]+\*[^*]+\*(.-?)+$/i.test(t)||/^WFS(T)?\*[^*]*\*[^*]+\*[^*]+\*[^*]+\*(.-?)+$/i.test(t))&&(e=t.split(/\*/)[5].trim().split("-")):bD(t)&&!_D(t.ids)?e=t.ids:bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t))),wD(e)&&(e=null),_D(e)||mD(e)||(e=[e]),e}(e),i.version=function(t){var e;return xD(t)?/(\d\.\d\.\d)$/.test(t)&&(e=t.match(/\d\.\d\.\d$/)[0]):bD(t)?e=t.version:_l("El parámetro no es de un tipo soportado: ".concat(pc(t))),e}(e),i.style=function(t){var e;return xD(t)?/^WFS(T)?\*.+/i.test(t)&&/^WFS(T)?\*[^*]*\*[^*]+\*[^*]+:[^*]+\*[^*]+\*[^*]*\*[^*]*\*[^*]*/i.test(t)&&(e=t.split(/\*/)[7].trim()):bD(t)&&!_D(t.style)?e=t.style:bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t))),e}(e),i.options=function(t){var e;return xD(t)||(bD(t)?e=t.options:_l("El parámetro no es de un tipo soportado: ".concat(pc(t)))),e}(e),i.outputFormat=t.outputFormat,i})),mD(t)||(e=e[0]),e},bc=function(t){var e=[];_D(t)&&_l("No ha especificado ningún parámetro");var r=t;return mD(r)||(r=[r]),e=r.map((function(t){var e={};return e.type=Uu,e.name=function(t){var e;if(xD(t)){if(/^MVT\*.+/i.test(t)){var r=t.match(/.*\*(https?:\/\/[^*]+)\*([^*]+)/i);r&&r.length>2&&(e=r[2])}}else bD(t)&&!_D(t.name)?e=t.name.trim():bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t)));return e}(t),e.url=function(t){var e;if(xD(t)){if(/^MVT\*.+/i.test(t)){var r=t.match(/.*\*(https?:\/\/[^*]+).*/i);r&&r.length>1&&(e=r[1])}}else bD(t)&&!_D(t.url)?e=t.url.trim():bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t)));return e}(t),e.mode=function(t){var e;if(xD(t)){if(/^MVT\*.+/i.test(t)){var r=t.match(/.*\*(https?:\/\/[^*]+)\*([^*]+)\*([^*]+)/i);r&&r.length>3&&(e=r[3])}}else bD(t)&&!_D(t.mode)?e=t.mode.trim():bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t)));return e}(t),e.projection=function(t){var e;if(xD(t)){if(/^MVT\*.+/i.test(t)){var r=t.match(/.*\*(https?:\/\/[^*]+)\*([^*]+)\*([^*]+)\*([^*]+)/i);r&&r.length>4&&(e=r[4])}}else bD(t)&&!_D(t.proj)?e=t.proj.trim():bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t)));return e}(t),e})),mD(t)||(e=e[0]),e},xc=function(t){var e=[];_D(t)&&_l(uu("exception").no_param);var r=t;return mD(r)||(r=[r]),e=r.map((function(t){var e,r,n={};return n.type=ku,n.name=(xD(e=t)?/^WMTS\*.+/i.test(e)?/^WMTS\*[^*]+\*[^*]+/i.test(e)&&(r=e.split(/\*/)[2].trim()):/^[^*]*\*[^*]+/.test(e)&&(r=e.split(/\*/)[1].trim()):bD(e)&&!_D(e.name)?r=e.name.trim():bD(e)||_l("El parámetro no es de un tipo soportado: ".concat(pc(e))),(wD(r)||/^(true|false)$/i.test(r))&&(r=null),r),n.url=function(t){var e;if(xD(t)){var r=t.match(/^([^*]*\*)*(https?:\/\/[^*]+)([^*]*\*?)*$/i);r&&r.length>2&&(e=r[2])}else bD(t)?e=t.url:_l("El parámetro no es de un tipo soportado: ".concat(pc(t)));return e}(t),n.matrixSet=function(t){var e,r;return xD(t)?/^WMTS\*[^*]+\*[^*]+(\*[^*]])*/i.test(t)?e=(r=t.split(/\*/))[3]?r[3].trim():null:/^[^*]+\*[^*]+\*[^*]+/.test(t)&&(e=(r=t.split(/\*/))[2].trim()):bD(t)&&!_D(t.matrixSet)?e=t.matrixSet.trim():bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t))),(wD(e)||/^(true|false)$/i.test(e))&&(e=null),e}(t),n.legend=function(t){var e;return xD(t)?/^WMTS\*.+/i.test(t)?/^WMTS\*[^*]+\*[^*]+\*[^*]*\*[^*]+/i.test(t)&&(e=t.split(/\*/)[4].trim()):/^[^*]+\*[^*]+\*[^*]*\*[^*]+/.test(t)&&(e=t.split(/\*/)[3].trim()):bD(t)&&!_D(t.legend)?e=t.legend.trim():bD(t)||_l("El parámetro no es de un tipo soportado: ".concat(pc(t))),(wD(e)||/^(true|false)$/i.test(e))&&(e=null),e}(t),n.options=function(t){var e;return xD(t)||(bD(t)?e=t.options:_l("El parámetro no es de un tipo soportado: ".concat(pc(t)))),e}(t),n.transparent=function(t){var e;return xD(t)?/^WMTS\*[^*]+\*[^*]+\*[^*]*\*[^*]*\*(true|false)/i.test(t)?e=t.split(/\*/)[5].trim():/^WMS_FULL\*[^*]+(\*(true|false))?/i.test(t)?(t.split(/\*/),e=!0):/^[^*]+\*[^*]+\*[^*]+\*(true|false)/i.test(t)?e=t.split(/\*/)[3].trim():/^[^*]+\*[^*]+\*(true|false)/i.test(t)&&(e=t.split(/\*/)[2].trim()):bD(t)?e=OD(t.transparent):_l("El parámetro no es de un tipo soportado: ".concat(pc(t))),_D(e)||(e=/^1|(true)$/i.test(e)),e}(t),n})),mD(t)||(e=e[0]),e},wc={kml:$u,mapbox:rc,osm:ac,wfs:vc,wmc:fc,wms:Hu,wmts:xc,geojson:cc,mvt:bc},Ec=function(t,e){var r=[];_D(t)&&_l(uu("exception").no_param);var n=t;return mD(n)||(n=[n]),r=n.map((function(t){var r=null;if(bD(t)&&t instanceof Lc)r=t;else{var n=function(t,e){var r;if(xD(t))if(/^\s*osm\s*$/i.test(t))r=ju;else if(/^\s*mapbox\*.+$/i.test(t))r=Fu;else{var n=t.match(/^(\w+)\*.+$/);n&&n.length>1&&(r=zu(n[1]),dD(r)&&_l("No se reconoce el tipo de capa ".concat(n[1]))),dD(r)&&!_D(e)?r=e:dD(r)&&_l("No se reconoce el tipo de capa ".concat(r))}else bD(t)?_D(t.type)||(r=zu(t.type),dD(r)&&_l("No se reconoce el tipo de capa ".concat(r))):_l("El parámetro no es de un tipo soportado: ".concat(pc(t)));return _D(r)||_D(e)||r===e||_l("El tipo de la capa (".concat(r).concat(") no era el esperado (").concat(e).concat(")")),_D(r)&&!_D(e)&&(r=e),r}(t,e);n=OD(n),r=vD(wc[n])?wc[n](t):t}return r})),mD(t)||(r=r[0]),r};function Oc(t){return(Oc="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Sc(t,e){for(var r=0;r1?a:2,x=o||new Array(b);for(g=0;g>1;i1?new ih(r,Io,i):new Oa(r,Io,n);default:throw new Error("Invalid geometry type:"+e)}}ah.prototype.getEndss=ah.prototype.getEnds,ah.prototype.getFlatCoordinates=ah.prototype.getOrientedFlatCoordinates;var lh=ah,uh=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function ch(t){for(var e=[],r=0,n=t.length;r=r[0]||(t[1]<=r[1]&&t[3]>=r[1]||Object(mt.t)(t,this.intersectsCoordinate.bind(this)))}return!1},e.prototype.setCenter=function(t){var e=this.stride,r=this.flatCoordinates[e]-this.flatCoordinates[0],n=t.slice();n[e]=n[0]+r;for(var i=1;it.length)&&(e=t.length);for(var r=0,n=new Array(e);r1)e.geometry.coordinates.forEach((function(t){if(!Number.isFinite(t[0])&&Array.isArray(t))o.push(t.map((function(t){var e=[];return Number.isFinite(t[0])?e.push(r(t)):t.forEach((function(t){e.push(r(t))})),e}))),i=vh(vh({},e),{},{geometry:{type:e.geometry.type,coordinates:o}});else{var n=r(t);o.push(n),i=vh(vh({},e),{},{geometry:{type:e.geometry.type,coordinates:o}})}})),n.push(i);else if(3===e.geometry.coordinates.length)e.geometry.coordinates.pop(),i=vh(vh({},e),{},{geometry:{type:e.geometry.type,coordinates:r(e.geometry.coordinates)}}),n.push(i);else if(1===t.length)if(e.geometry.coordinates[0].length>2){var a=e.geometry.coordinates[0].map((function(t){return r(t)}));i=vh(vh({},e),{},{geometry:{type:e.geometry.type,coordinates:a}}),n.push(i)}else i=vh(vh({},e),{},{geometry:{type:e.geometry.type,coordinates:r(e.geometry.coordinates[0])}}),n.push(i);else if(Number.isFinite(e.geometry.coordinates[0])){var s=r(e.geometry.coordinates);i=vh(vh({},e),{},{geometry:{type:e.geometry.type,coordinates:s}}),n.push(i)}})),n},wh=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}var e,r,n;return e=t,n=[{key:"generateResolutions",value:function(t,e,r,n){var i,o,a,s=[];_D(e)&&(i=t.getExtent());var l=Object(mt.F)(i)/256;_D(r)&&(o=0),_D(n)&&(a=28);for(var u=a-o,c=0;c=o[e]}))?i.getExtent():Object(u.A)(t,n,i)}},{key:"olRenderFeature2olFeature",value:function(t,e,r){var n;if(!_D(t)){var i,o=t.getId(),a=t.getProperties();if(_D(e)&&_D(e))i=this.getGeometryFromRenderFeature(t.getGeometry());else{var s=e.getExtent(),l=e.getWorldExtent();if(!_D(s)&&!_D(l)){var u=this.cloneOLRenderFeature(t);u.transform(e,r),i=this.getGeometryFromRenderFeature(u.getGeometry())}}n=new Wc,_D(o)?n.setId(CD("mapea_feature_")):n.setId(o),n.setProperties(a,!0),n.setGeometry(i)}return n}},{key:"cloneOLRenderFeature",value:function(t){var e=t.getType(),r=t.getFlatCoordinates(),n=t.getEnds(),i=t.getProperties(),o=t.getId(),a=gh(r),s=Object.assign(i),l=gh(n);return new lh(e,a,l,s,o)}},{key:"getGeometryFromRenderFeature",value:function(t){var e,r=t.getFlatCoordinates(),n=t.getEnds(),i=t.getEndss();switch(t.getType()){case fo.a.POINT:e=new aa(r);break;case fo.a.LINE_STRING:e=new Qc(r);break;case fo.a.LINEAR_RING:e=new ia(r);break;case fo.a.POLYGON:e=new Oa(r);break;case fo.a.MULTI_POINT:e=new Hc(r);break;case fo.a.MULTI_LINE_STRING:e=new eh(r,void 0,n);break;case fo.a.MULTI_POLYGON:e=new ih(r,void 0,i);break;case fo.a.GEOMETRY_COLLECTION:var o=t.getGeometries();e=new hh(o);break;case fo.a.CIRCLE:var a=t.getFlatInteriorPoint();e=new dh(a);break;default:e=null}return e}},{key:"getWMTSScale",value:function(t,e){var r=t.getProjection().code,n=Object(u.o)(r).getMetersPerUnit(),i=t.getMapImpl().getSize(),o=i[0],a=t.getMapImpl().getView().calculateExtent(i),s=n*(a[2]-a[0])/o*1e3/.28;return 1==!e&&(s=s>=1e3&&s<=95e4?1e3*Math.round(s/1e3):s>=95e4?1e6*Math.round(s/1e6):Math.round(s)),Math.trunc(s)}}],(r=null)&&mh(e.prototype,r),n&&mh(e,n),t}();function Eh(t){return(Eh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Oh(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Sh(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Oh(this,o),(t=i.call(this,e)).vendorOptions_=r,t.map=null,t.ol3Layer=null,t.options=e,t.visibility=!1!==t.options.visibility,t.displayInLayerSwitcher=!1!==t.options.displayInLayerSwitcher,t.zIndex_=null,t.minScale_=null,t.maxScale_=null,t.opacity_=t.options.opacity||1,t.legendUrl_=FD([M.config.THEME_URL,Lc.LEGEND_DEFAULT]),t}return e=o,(r=[{key:"isVisible",value:function(){return _D(this.ol3Layer)?this.visibility:this.ol3Layer.getVisible()}},{key:"isQueryable",value:function(){return!1}},{key:"inRange",value:function(){var t=!1;if(!_D(this.ol3Layer)){var e=this.map.getMapImpl().getView().getResolution(),r=this.ol3Layer.getMaxResolution();t=e>=this.ol3Layer.getMinResolution()&&e<=r}return t}},{key:"setVisible",value:function(t){this.visibility=t,_D(this.ol3Layer)||this.ol3Layer.setVisible(t)}},{key:"getZIndex",value:function(){return _D(this.getOLLayer())||(this.zIndex_=this.getOLLayer().getZIndex()),this.zIndex_}},{key:"setZIndex",value:function(t){this.zIndex_=t,_D(this.getOLLayer())||this.getOLLayer().setZIndex(t)}},{key:"getMinScale",value:function(){var t=this.map.getProjection().units;return _D(this.getOLLayer())||_D(t)||(this.minScale_=ND(this.getOLLayer().getMinResolution(),t)),this.minScale_}},{key:"setMinScale",value:function(t){this.minScale_=t;var e=this.map.getProjection().units,r=LD(t,e);_D(this.getOLLayer())||_D(r)||_D(e)||this.getOLLayer().setMinResolution(r)}},{key:"getMaxScale",value:function(){var t=this.map.getProjection().units;return _D(this.getOLLayer())||_D(t)||(this.maxScale_=ND(this.getOLLayer().getMaxResolution(),t)),this.maxScale_}},{key:"setMaxScale",value:function(t){this.maxScale_=t;var e=this.map.getProjection().units,r=LD(t,e);_D(this.getOLLayer())||_D(r)||_D(e)||this.getOLLayer().setMaxResolution(r)}},{key:"getOpacity",value:function(){return _D(this.getOLLayer())||(this.opacity_=this.getOLLayer().getOpacity()),this.opacity_}},{key:"setOpacity",value:function(t){this.opacity_=t,_D(this.getOLLayer())||this.getOLLayer().setOpacity(t)}},{key:"getOL3Layer",value:function(){return this.ol3Layer}},{key:"getOLLayer",value:function(){return this.ol3Layer}},{key:"setOL3Layer",value:function(t){var e=this.map.getMapImpl();return e.removeLayer(this.ol3Layer),this.ol3Layer=t,e.addLayer(t),this}},{key:"setOLLayer",value:function(t){var e=this.map.getMapImpl();return e.removeLayer(this.ol3Layer),this.ol3Layer=t,e.addLayer(t),this}},{key:"getMap",value:function(){return this.map}},{key:"getLegendURL",value:function(){return this.legendUrl_}},{key:"setLegendURL",value:function(t){this.legendUrl_=t}},{key:"getNumZoomLevels",value:function(){return M.config.ZOOM_LEVELS}},{key:"unselectFeatures",value:function(t,e,r){}},{key:"selectFeatures",value:function(t,e,r){}}])&&Sh(e.prototype,r),n&&Sh(e,n),o}(il);function Lh(t,e){for(var r=0;r0)||Array.prototype.filter.call(t.children,(function(t){return t.tagName===r})).forEach((function(t){var r=t.cloneNode(!0);e.appendChild(r)}))}))},gf=function t(e){var r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=n,a=e;if(!0===r&&(a=e.querySelector("Layer")),null!==a){df(i,a);var s=a.querySelector("Name").innerHTML,l=a.children;Array.prototype.forEach.call(l,(function(e){"Layer"===e.tagName&&(o=t(e,!1,o,a))})),o[s]=a}return o},yf=[function t(e,r){var n=e,i=r[n.Name];if(_D(i))mD(n.Layer)&&n.Layer.forEach((function(e){return t(e,r)}));else{var o=i.querySelector("SRS");if(null!==o){var a=o.innerHTML;n.SRS=[a]}}},function t(e,r){var n=r[e.Name];if(_D(n))mD(e.Layer)&&e.Layer.forEach((function(e){return t(e,r)}));else if(mD(e.BoundingBox)){var i=Array.prototype.filter.call(n.children,(function(t){return"Layer"===t.tagName})),o=Array.prototype.map.call(n.children,(function(t){return t}));0===(o=o.filter((function(t){return["BoundingBox"].includes(t.tagName)}))).length&&i.length>0?i.forEach((function(r){return t(e,(n={},i=e.Name,o=r,i in n?Object.defineProperty(n,i,{value:o,enumerable:!0,configurable:!0,writable:!0}):n[i]=o,n));var n,i,o})):e.BoundingBox.forEach((function(t,e){var r=t;if(null===r.crs){var n=o[e];if(!_D(n)){var i=n.getAttribute("SRS");_D(i)||(r.crs=i)}}}))}},function t(e,r){var n=e,i=r[e.Name];if(_D(i))mD(e.Layer)&&e.Layer.forEach((function(e){return t(e,r)}));else{n.ScaleHint=[];var o=Array.prototype.map.call(i.children,(function(t){return t}));(o=o.filter((function(t){return"ScaleHint"===t.tagName}))).forEach((function(t){var e={minScale:parseFloat(t.getAttribute("min")),maxScale:parseFloat(t.getAttribute("max"))};n.ScaleHint.push(e)}))}},function t(e,r){var n=e,i=r[e.Name];if(_D(i))mD(n.Layer)&&n.Layer.forEach((function(e){return t(e,r)}));else{n.LatLonBoundingBox=[];var o=Array.prototype.map.call(i.children,(function(t){return t}));(o=o.filter((function(t){return"LatLonBoundingBox"===t.tagName}))).forEach((function(t){var e={crs:"EPSG:4326",extent:[parseFloat(t.getAttribute("minx")),parseFloat(t.getAttribute("miny")),parseFloat(t.getAttribute("maxx")),parseFloat(t.getAttribute("maxy"))]};n.LatLonBoundingBox.push(e)}))}},function(t,e){var r=t;_D(r.BoundingBox)&&!_D(r.LatLonBoundingBox)&&(r.BoundingBox=r.LatLonBoundingBox)},function(t,e){var r=t;_D(r.MaxScaleDenominator)&&!_D(r.ScaleHint)&&(r.MaxScaleDenominator=r.ScaleHint[0].maxScale)},function(t,e){var r=t;_D(r.MinScaleDenominator)&&!_D(r.ScaleHint)&&(r.MinScaleDenominator=r.ScaleHint[0].minScale)}],mf=function t(e,r){mD(e)?e.forEach((function(e){t(e,r)})):bD(e)&&(!function(t,e){yf.forEach((function(r){r(t,e)}))}(e,r),t(e.Layer,r))},_f=function(t){!function(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}}),e&&uf(t,e)}(o,t);var e,r,n,i=cf(o);function o(){return sf(this,o),i.apply(this,arguments)}return e=o,(r=[{key:"customRead",value:function(t){var e=this.read(t),r=gf(t),n=e.Capability;return _D(n)||_D(n.Layer)||mf(n.Layer,r),e}}])&&lf(e.prototype,r),n&&lf(e,n),o}(of),vf="1.3.0",bf=r(55),xf=r(71),wf=r(70),Ef=r(9),Of="tileloadstart",Sf="tileloadend",If="tileloaderror",Cf=r(43),Tf=r(22);function Pf(t,e){var r=/\{z\}/g,n=/\{x\}/g,i=/\{y\}/g,o=/\{-y\}/g;return function(a,s,l){return a?t.replace(r,a[0].toString()).replace(n,a[1].toString()).replace(i,a[2].toString()).replace(o,(function(){var t=a[0],r=e.getFullTileRange(t);return Object(Ui.a)(r,55),(r.getHeight()-a[2]-1).toString()})):void 0}}function Rf(t,e){for(var r=t.length,n=new Array(r),i=0;i=0},e.prototype.tileUrlFunction=function(t,e,r){var n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(r)),!(n.getResolutions().length<=t[0])){1==e||this.hidpi_&&void 0!==this.serverType_||(e=1);var i=n.getResolution(t[0]),o=n.getTileCoordExtent(t,this.tmpExtent_),a=Object(Aa.d)(n.getTileSize(t[0]),this.tmpSize),s=this.gutter_;0!==s&&(a=Object(Aa.a)(a,s,this.tmpSize),o=Object(mt.d)(o,i*s,o)),1!=e&&(a=Object(Aa.c)(a,e,this.tmpSize));var l={SERVICE:"WMS",VERSION:vf,REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};return Object(ii.a)(l,this.params_),this.getRequestUrl_(t,a,o,e,r,l)}},e}(Uf);function Zf(t){return(Zf="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Kf(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Jf(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};Kf(this,o);var e=t;return _D(t.tileLoadFunction)&&(e.tileLoadFunction=o.tileLoadFunction),i.call(this,e)}return e=o,n=[{key:"tileLoadFunction",value:function(t,e){var r=t;r.getImage().src="".concat(e,"&_=").concat(this.revision_),null!=M.config.ticket&&(r.getImage().src+="&ticket=".concat(M.config.ticket))}}],(r=[{key:"changed",value:function(){_D(this.tileCache)||this.tileCache.clear(),$f(rp(o.prototype),"changed",this).call(this)}}])&&Jf(e.prototype,r),n&&Jf(e,n),o}(Hf),ip=r(32),op=r(44),ap=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),sp=[101,101],lp=function(t){function e(e){var r=this,n=e||{},i=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(i=n.interpolate),(r=t.call(this,{attributions:n.attributions,interpolate:i,projection:n.projection,resolutions:n.resolutions})||this).crossOrigin_=void 0!==n.crossOrigin?n.crossOrigin:null,r.url_=n.url,r.imageLoadFunction_=void 0!==n.imageLoadFunction?n.imageLoadFunction:ip.b,r.params_=n.params||{},r.v13_=!0,r.updateV13_(),r.serverType_=n.serverType,r.hidpi_=void 0===n.hidpi||n.hidpi,r.image_=null,r.imageSize_=[0,0],r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return ap(e,t),e.prototype.getFeatureInfoUrl=function(t,e,r,n){if(void 0!==this.url_){var i=Object(u.o)(r),o=this.getProjection();o&&o!==i&&(e=Object(Wf.b)(o,i,t,e),t=Object(u.z)(t,i,o));var a=Object(mt.z)(t,e,0,sp),s={SERVICE:"WMS",VERSION:vf,REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.params_.LAYERS};Object(ii.a)(s,this.params_,n);var l=Object(mo.d)((t[0]-a[0])/e,4),c=Object(mo.d)((a[3]-t[1])/e,4);return s[this.v13_?"I":"X"]=l,s[this.v13_?"J":"Y"]=c,this.getRequestUrl_(a,sp,1,o||i,s)}},e.prototype.getLegendUrl=function(t,e){if(void 0!==this.url_){var r={SERVICE:"WMS",VERSION:vf,REQUEST:"GetLegendGraphic",FORMAT:"image/png"};if(void 0===e||void 0===e.LAYER){var n=this.params_.LAYERS;if(!(!Array.isArray(n)||1===n.length))return;r.LAYER=n}if(void 0!==t){var i=this.getProjection()?this.getProjection().getMetersPerUnit():1;r.SCALE=t*i/28e-5}return Object(ii.a)(r,e),Yf(this.url_,r)}},e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){if(void 0===this.url_)return null;e=this.findNearestResolution(e),1==r||this.hidpi_&&void 0!==this.serverType_||(r=1);var i=e/r,o=Object(mt.x)(t),a=Object(mo.a)(Object(mt.F)(t)/i,4),s=Object(mo.a)(Object(mt.A)(t)/i,4),l=Object(mt.z)(o,i,0,[a,s]),u=Object(mo.a)(this.ratio_*Object(mt.F)(t)/i,4),c=Object(mo.a)(this.ratio_*Object(mt.A)(t)/i,4),h=Object(mt.z)(o,i,0,[u,c]),f=this.image_;if(f&&this.renderedRevision_==this.getRevision()&&f.getResolution()==e&&f.getPixelRatio()==r&&Object(mt.h)(f.getExtent(),l))return f;var p={SERVICE:"WMS",VERSION:vf,REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};Object(ii.a)(p,this.params_),this.imageSize_[0]=Object(mo.h)(Object(mt.F)(h)/i,4),this.imageSize_[1]=Object(mo.h)(Object(mt.A)(h)/i,4);var d=this.getRequestUrl_(h,this.imageSize_,r,n,p);return this.image_=new op.a(h,e,r,d,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),this.image_.addEventListener(Di.a.CHANGE,this.handleImageChange.bind(this)),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,r,n,i){if(Object(Ui.a)(void 0!==this.url_,9),i[this.v13_?"CRS":"SRS"]=n.getCode(),"STYLES"in this.params_||(i.STYLES=""),1!=r)switch(this.serverType_){case zf:var o=90*r+.5|0;"FORMAT_OPTIONS"in i?i.FORMAT_OPTIONS+=";dpi:"+o:i.FORMAT_OPTIONS="dpi:"+o;break;case Vf:i.MAP_RESOLUTION=90*r;break;case Bf:case qf:i.DPI=90*r;break;default:Object(Ui.a)(!1,8)}i.WIDTH=e[0],i.HEIGHT=e[1];var a,s=n.getAxisOrientation();return a=this.v13_&&"ne"==s.substr(0,2)?[t[1],t[0],t[3],t[2]]:t,i.BBOX=a.join(","),Yf(this.url_,i)},e.prototype.getUrl=function(){return this.url_},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e.prototype.setUrl=function(t){t!=this.url_&&(this.url_=t,this.image_=null,this.changed())},e.prototype.updateParams=function(t){Object(ii.a)(this.params_,t),this.updateV13_(),this.image_=null,this.changed()},e.prototype.updateV13_=function(){var t=this.params_.VERSION||vf;this.v13_=Object(G.a)(t,"1.3")>=0},e}(ip.a);function up(t){return(up="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function cp(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function hp(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};cp(this,o);var r=e;return(t=i.call(this,r)).imageLoadFunction_=r.imageLoadFunction||t.imageLoadFunction,t}return e=o,(r=[{key:"changed",value:function(){fp(yp(o.prototype),"changed",this).call(this)}},{key:"imageLoadFunction",value:function(t,e){var r=t;r.getImage().src="".concat(e,"&_=").concat(this.revision_),null!=M.config.ticket&&(r.getImage().src+="&ticket=".concat(M.config.ticket))}}])&&hp(e.prototype,r),n&&hp(e,n),o}(lp);function _p(t){return(_p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function vp(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function bp(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;return vp(this,o),(t=i.call(this,e,r)).facadeLayer_=null,t.options=e,t.layers=[],t.displayInLayerSwitcher_=!0,t.getCapabilitiesPromise=null,t.extentPromise=null,t.extent=null,t.resolutions_=null,t.extentProj_=null,!1===t.options.visibility&&(t.visibility=!1),_D(t.tiled)&&(t.tiled=!0!==t.options.singleTile),_D(t.options.numZoomLevels)&&(t.options.numZoomLevels=M.config.ZOOM_LEVELS),_D(t.options.animated)&&(t.options.animated=!1),t.styles=t.options.styles||"",t.sldBody=e.sldBody,t.zIndex_=id.Z_INDEX.WMS,t}return e=o,(r=[{key:"setVisible",value:function(t){var e=this;if(this.visibility=t,!0===this.inRange())if(!0===t&&!0!==this.transparent){this.map.getBaseLayers().filter((function(t){return!t.equals(e)&&t.isVisible()})).forEach((function(t){return t.setVisible(!1)})),_D(this.ol3Layer)||this.ol3Layer.setVisible(t);var r=this.map.getZoom();this.map.getImpl().updateResolutionsFromBaseLayer(),_D(r)||this.map.setZoom(r)}else _D(this.ol3Layer)||this.ol3Layer.setVisible(t)}},{key:"isQueryable",value:function(){return!1!==this.options.queryable}},{key:"addTo",value:function(t){if(this.map=t,this.fire(Cl),!yD(this.options)&&!yD(this.options.minScale)&&!yD(this.options.maxScale)){var e=this.map.getProjection().units;this.options.minResolution=LD(this.options.minScale,e),this.options.maxResolution=LD(this.options.maxScale,e)}_D(this.name)?this.addAllLayers_():this.addSingleLayer_(),this.legendUrl_===FD([M.config.THEME_URL,Lc.LEGEND_DEFAULT])&&(this.legendUrl_=ID(this.url,{SERVICE:"WMS",VERSION:this.version,REQUEST:"GetLegendGraphic",LAYER:this.name,FORMAT:"image/png",EXCEPTIONS:"image/png"}))}},{key:"setResolutions",value:function(t){var e=this;this.resolutions_=t,this.facadeLayer_.calculateMaxExtent().then((function(r){if(!_D(e.ol3Layer)){var n=e.options.minResolution,i=e.options.maxResolution,o=e.createOLSource_(t,n,i,r);e.ol3Layer.setSource(o),e.ol3Layer.setExtent(r)}}))}},{key:"addSingleLayer_",value:function(){var t=this;this.facadeLayer_.calculateMaxExtent().then((function(e){var r=t.options.minResolution,n=t.options.maxResolution,i=t.opacity_,o=t.zIndex_,a=t.visibility&&!1!==t.options.visibility,s=t.map.getResolutions();if(_D(s)&&!_D(t.resolutions_))s=t.resolutions_;else if(_D(s)){var l=t.getNumZoomLevels(),u=t.map.getMapImpl().getSize(),c=t.map.getProjection().units;s=_D(r)||_D(n)?MD(e,u,l,c):RD(r,n,l)}var h=t.createOLSource_(s,r,n,e);!0===t.tiled?t.ol3Layer=new Mc.a(GD({visible:a,source:h,extent:e,minResolution:r,maxResolution:n,opacity:i,zIndex:o},t.vendorOptions_,!0)):t.ol3Layer=new Nc.a(GD({visible:a,source:h,extent:e,minResolution:r,maxResolution:n,opacity:i,zIndex:o},t.vendorOptions_,!0)),t.map.getMapImpl().addLayer(t.ol3Layer),t.facadeLayer_.fire(Xl),t.isVisible()&&!t.inRange()?t.setVisible(!1):t.setVisible(t.visibility),null!==o&&t.setZIndex(o),null!==t.resolutions_&&t.setResolutions(t.resolutions_);var f=!1===t.transparent||!0===t.options.animated;t.ol3Layer.set("animated",f)}))}},{key:"createOLSource_",value:function(t,e,r,n){var i=this,o=this.vendorOptions_.source;if(_D(this.vendorOptions_.source)){var a=this.options.crossOrigin,s={LAYERS:this.name,TILED:!0,VERSION:this.version,TRANSPARENT:this.transparent,FORMAT:"image/png",STYLES:this.styles};_D(this.sldBody)||(s.SLD_BODY=this.sldBody),_D(this.options.params)||Object.keys(this.options.params).forEach((function(t){s[t.toUpperCase()]=i.options.params[t]}));var l=this.opacity_,u=this.zIndex_;if(!0===this.tiled){var c=Object(mt.v)(n),h={url:this.url,params:s,tileGrid:new Ac.a({resolutions:t,extent:n,origin:c}),extent:n,minResolution:e,maxResolution:r,opacity:l,zIndex:u};dD(a)||(h.crossOrigin=a),o=new np(h)}else{var f={url:this.url,params:s,resolutions:t,extent:n,minResolution:e,maxResolution:r,opacity:l,zIndex:u};dD(a)||(f.crossOrigin=a),o=new mp(f)}}return o}},{key:"addAllLayers_",value:function(){var t=this;this.getCapabilities().then((function(e){e.getLayers().forEach((function(e){var r=new Ap({url:t.url,name:e.name,version:e.version,tiled:t.tiled},t.vendorOptions_);t.layers.push(r)})),t.map.addWMS(t.layers);var r=t.layers.length;t.layers.forEach((function(t){t.setZIndex(id.Z_INDEX.WMS+r),r+=1}))}))}},{key:"getExtent",value:function(){var t=this,e=Object(u.o)(this.map.getProjection().code);return this.extentPromise=new Promise((function(r,n){_D(t.extent_)?t.getCapabilities().then((function(n){t.extent_=n.getLayerExtent(t.name),t.extentProj_=e,r(t.extent_)})):(t.extent_=wh.transformExtent(t.extent_,t.extentProj_,e),t.extentProj_=e,r(t.extent_))})),this.extentPromise}},{key:"getMinResolution",value:function(){return this.options.minResolution}},{key:"getMaxResolution",value:function(){return this.options.maxResolution}},{key:"updateMinMaxResolution",value:function(t){_D(this.options.minResolution)||(this.options.minResolution=LD(this.options.minScale,t.units),this.ol3Layer.setMinResolution(this.options.minResolution)),_D(this.options.maxResolution)||(this.options.maxResolution=LD(this.options.maxScale,t.units),this.ol3Layer.setMaxResolution(this.options.maxResolution))}},{key:"setMaxExtent",value:function(t){var e=this.options.minResolution,r=this.options.maxResolution,n=this.getOLLayer();if(!_D(n)&&(n.setExtent(t),!0===this.tiled)){var i=this.map.getResolutions();if(_D(i)&&!_D(this.resolutions_)&&(i=this.resolutions_),!_D(i)){var o=this.createOLSource_(i,e,r,t);n.setSource(o)}}}},{key:"getNumZoomLevels",value:function(){return this.options.numZoomLevels}},{key:"getLayers",value:function(){return this.layers}},{key:"getCapabilities",value:function(){if(_D(this.getCapabilitiesPromise)){var t=this.url,e=this.version,r=this.map.getProjection(),n=this.map.getTicket();this.getCapabilitiesPromise=new Promise((function(i,o){var a=TD(t,e,n);uD(a).then((function(e){if("xml"in e&&!_D(e.xml)){var n=e.xml,o=(new _f).customRead(n),s=new Mh(o,t,r);i(s)}else uD(a,"",{ticket:!1}).then((function(e){var n=e.xml,o=(new _f).customRead(n),a=new Mh(o,t,r);i(a)}))}))}))}return this.getCapabilitiesPromise}},{key:"getLegendURL",value:function(){return this.legendUrl_}},{key:"setLegendURL",value:function(t){this.legendUrl_=t}},{key:"refresh",value:function(){var t=this.getOLLayer();_D(t)||t.getSource().updateParams({time:Date.now()})}},{key:"getExtentFromCapabilities",value:function(t){var e=this.facadeLayer_.name,r=this.map.getProjection().code;return t.getLayerExtent(e,r)}},{key:"setFacadeObj",value:function(t){this.facadeLayer_=t}},{key:"getStyles",value:function(){return this.getOLLayer().getSource().getParams().STYLES}},{key:"setStyles",value:function(t){var e=this.getOLLayer();_D(e)||e.getSource().updateParams({STYLES:t})}},{key:"destroy",value:function(){var t=this.map.getMapImpl();_D(this.ol3Layer)||(t.removeLayer(this.ol3Layer),this.ol3Layer=null),_D(this.layers)||(this.layers.map(this.map.removeLayers,this.map),this.layers.length=0),this.map=null}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.url===t.url,e=e&&this.name===t.name,e=e&&this.cql===t.cql,e=e&&this.version===t.version),e}},{key:"cloneOLLayer",value:function(){var t=null;if(null!=this.ol3Layer){var e=this.ol3Layer.getProperties();t=!0===this.tiled?new Mc.a(e):new Nc.a(e)}return t}}])&&bp(e.prototype,r),n&&bp(e,n),o}(Rh);Sp.LEGEND_IMAGE=null;var Ip=Sp;function Cp(t){return(Cp="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Tp(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Pp(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;Tp(this,o),dD(Ip)&&_l(uu("exception").wms_method),_D(t)&&_l(uu("exception").no_param);var a=Ec(t,Nu),s=a.styles||"";_D(s)||Object.defineProperty(r,"styles",{value:s,writable:!0});var l=new Ip(r,n);return(e=i.call(this,a,l)).legend=a.legend,e.cql=a.cql,e.version=a.version,_D(a.tiled)||(e.tiled=a.tiled),e.transparent=a.transparent,e.styles=s,e.options=r,e.wmcParent_=null,e.getCapabilitiesPromise_=null,e._updateNoCache(),e}return e=o,(r=[{key:"getStyles",value:function(){return this.getImpl().getStyles()}},{key:"setStyles",value:function(t){this.styles=t,this.getImpl().setStyles(t)}},{key:"getMaxExtent",value:function(t){var e,r=this;if(_D(this.userMaxExtent))if(_D(this.options.wmcMaxExtent))if(_D(this.map_.userMaxExtent)){var n=this.map_.getWMC().find((function(t){return t.selected}));_D(n)?this.getCapabilities().then((function(e){var n=r.getImpl().getExtentFromCapabilities(e);if(_D(n)){var i=r.map_.getProjection().getExtent();r.maxExtent_=i}else r.maxExtent_=n;vD(t)&&t(r.maxExtent_)})):n.calculateMaxExtent().then((function(e){r.maxExtent_=e,vD(t)&&t(r.maxExtent_)}))}else this.maxExtent_=this.map_.userMaxExtent,e=this.maxExtent_;else this.maxExtent_=this.options.wmcMaxExtent,e=this.maxExtent_;else e=this.userMaxExtent;return!_D(e)&&vD(t)?t(e):_D(e)&&(e=this.maxExtent_),e}},{key:"calculateMaxExtent",value:function(){var t=this;return new Promise((function(e){return t.getMaxExtent(e)}))}},{key:"getCapabilities",value:function(){return _D(this.getCapabilitiesPromise_)&&(this.getCapabilitiesPromise_=this.getImpl().getCapabilities()),this.getCapabilitiesPromise_}},{key:"getNoCacheUrl",value:function(){return this._noCacheUrl}},{key:"getNoCacheName",value:function(){return this._noCacheName}},{key:"setWMCParent",value:function(t){this.wmcParent_=t}},{key:"getWMCParent",value:function(){return this.wmcParent_}},{key:"updateMinMaxResolution",value:function(t){return this.getImpl().updateMinMaxResolution(t)}},{key:"_updateNoCache",value:function(){var t=M.config.tileMappgins.tiledNames.indexOf(this.name);-1!==t&&zD(M.config.tileMappgins.tiledUrls[t],this.url)&&(this._noCacheUrl=M.config.tileMappgins.urls[t],this._noCacheName=M.config.tileMappgins.names[t])}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.url===t.url,e=e&&this.name===t.name,e=e&&this.cql===t.cql,e=e&&this.version===t.version),e}},{key:"type",get:function(){return Nu},set:function(t){dD(t)||_D(t)||t===Nu||_l("El tipo de capa debe ser '".concat(Nu).concat("' pero se ha especificado '").concat(t).concat("'"))}},{key:"legend",get:function(){return this.getImpl().legend},set:function(t){_D(t)?this.getImpl().legend=this.name:this.getImpl().legend=t}},{key:"tiled",get:function(){return this.getImpl().tiled},set:function(t){_D(t)?this.getImpl().tiled=!0:xD(t)?this.getImpl().tiled="true"===OD(t):this.getImpl().tiled=t}},{key:"cql",get:function(){return this.getImpl().cql},set:function(t){this.getImpl().cql=t}},{key:"version",get:function(){return this.getImpl().version},set:function(t){_D(t)?this.getImpl().version="1.1.0":this.getImpl().version=t}},{key:"options",get:function(){return this.getImpl().options},set:function(t){this.getImpl().options=t}}])&&Pp(e.prototype,r),n&&Pp(e,n),o}(Lc);function kp(t){return(kp="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function jp(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&(this.removeWMC(r),this.removeKML(r),this.removeWMS(r),this.removeWFS(r),this.removeWMTS(r),this.removeMVT(r)),e.length>0&&(this.removeUnknowLayers_(e),td.forEach((function(t){return t(e)}))),t.forEach((function(t){t.getLayerGroup&&!_D(t.getLayerGroup())&&t.getLayerGroup().deleteChild(t)})),Array.isArray(this.getBaseLayers())&&this.getBaseLayers().length>0||(this._resolutionsBaseLayer=!1),this.facadeMap_.fire(kl,[t]),this}},{key:"getLayerGroups",value:function(){return this.layerGroups_}},{key:"getGroupedLayers",value:function(){var t=[],e=this.getLayerGroups();return 1===e.length?t=e[0].getAllLayers():e.length>1&&(t=e.reduce((function(t,e){return Array.isArray(t)?t.concat(e.getAllLayers()):t.getAllLayers().concat(e.getAllLayers())}))),t}},{key:"addLayerGroups",value:function(t){var e=this;return t.forEach((function(t){t.addTo(e.facadeMap_),DD(e.layerGroups_,t)||(e.layerGroups_.push(t),t.getAllLayers().forEach((function(t){e.facadeMap_.addLayers(t)})))})),this}},{key:"removeLayerGroups",value:function(t){var e=this;return(Array.isArray(t)?Yp(t):[t]).forEach((function(t){e.layerGroups_.remove(t),t.destroy(),t.fire(jl,[t])})),this}},{key:"getWMC",value:function(t){var e=t,r=[],n=this.layers_.filter((function(t){return t.type===Lu}));return _D(e)&&(e=[]),mD(e)||(e=[e]),0===e.length?r=n:e.forEach((function(t){r=r.concat(n.filter((function(e){var n=!0;return r.includes(e)?n=!1:(_D(t.type)||(n=n&&t.type===e.type),_D(t.url)||(n=n&&t.url===e.url),_D(t.name)||(n=n&&t.name===e.name)),n})))}),this),r}},{key:"addWMC",value:function(t){var e=this;return t.forEach((function(t,r){t.type===Lu&&(DD(e.layers_,t)||(t.setZIndex(o.Z_INDEX.WMC),t.getImpl().addTo(e.facadeMap_),e.layers_.push(t)))}),this),this}},{key:"removeWMC",value:function(t){var e=this;return this.getWMC(t).forEach((function(t){!0===t.selected&&!1===t.isLoaded()?t.on(Xl,(function(){e.layers_=e.layers_.filter((function(e){return!e.equals(t)})),e.facadeMap_.removeWMS(t.layers),e.facadeMap_.refreshWMCSelectorControl()})):(e.layers_=e.layers_.filter((function(e){return!e.equals(t)})),e.facadeMap_.removeWMS(t.layers)),e.facadeMap_.refreshWMCSelectorControl(),t.fire(jl,[t])}),this),this}},{key:"getKML",value:function(t){var e=[],r=t,n=this.layers_.filter((function(t){return t.type===Mu}));return _D(r)&&(r=[]),mD(r)||(r=[r]),0===r.length?e=n:r.forEach((function(t){var r=n.filter((function(r){var n=!0;return e.includes(r)?n=!1:(_D(t.type)||(n=n&&t.type===r.type),_D(t.url)||(n=n&&t.url===r.url),_D(t.name)||(n=n&&t.name===r.name),_D(t.extract)||(n=n&&t.extract===r.extract)),n}));e=e.concat(r)}),this),e}},{key:"addKML",value:function(t){var e=this,r=this.getBaseLayers().length>0;return t.forEach((function(t){if(t.type===Mu&&!DD(e.layers_,t)){if(t.getImpl().addTo(e.facadeMap_),e.layers_.push(t),null==t.getZIndex()){var n=e.layers_.length+o.Z_INDEX.KML;t.setZIndex(n)}r||e.updateResolutionsFromBaseLayer()}}),this),this}},{key:"removeKML",value:function(t){var e=this;return this.getKML(t).forEach((function(t){e.layers_=e.layers_.filter((function(e){return!t.equals(e)})),t.getImpl().destroy(),t.fire(jl,[t])}),this),this}},{key:"getWMS",value:function(t){var e=[],r=t,n=this.layers_.filter((function(t){return t.type===Nu}));return _D(r)&&(r=[]),mD(r)||(r=[r]),0===r.length?e=n:r.forEach((function(t){var r=n.filter((function(r){var n=!0;return e.includes(r)?n=!1:t instanceof Ap?n=t===r:(_D(t.type)||(n=n&&t.type===r.type),_D(t.url)||(n=n&&t.url===r.url),_D(t.name)||(n=n&&t.name===r.name),_D(t.legend)||(n=n&&t.legend===r.legend),_D(t.transparent)||(n=n&&t.transparent===r.transparent),_D(t.tiled)||(n=n&&t.tiled===r.tiled),_D(t.cql)||(n=n&&t.cql===r.cql),_D(t.version)||(n=n&&t.version===r.version)),n}));e=e.concat(r)}),this),e}},{key:"addWMS",value:function(t){var e=this,r=this.getBaseLayers().length>0,n=[];return t.forEach((function(t){if(t.type===Nu&&!DD(e.layers_,t))if(t.getImpl().addTo(e.facadeMap_),e.layers_.push(t),n.push(t),!0!==t.transparent)t.setVisible(!r),r=!0,t.setZIndex(o.Z_INDEX_BASELAYER);else if(null==t.getZIndex()){var i=e.layers_.length+o.Z_INDEX.WMS;t.setZIndex(i)}})),(n.length>0&&!r||n.some((function(t){return!0!==t.transparent&&t.isVisible()})))&&this.updateResolutionsFromBaseLayer(),this}},{key:"removeWMS",value:function(t){var e=this;return this.getWMS(t).forEach((function(t){if(e.layers_=e.layers_.filter((function(e){return!t.equals(e)})),t.getImpl().destroy(),t.fire(jl,[t]),!0!==t.transparent){var r=e.facadeMap_.getBaseLayers();r.length>0&&r[0].setVisible(!0)}})),this}},{key:"getGeoJSON",value:function(t){var e=[],r=t,n=this.layers_.filter((function(t){return t.type===Du}));return _D(r)&&(r=[]),mD(r)||(r=[r]),0===r.length?e=n:r.forEach((function(t){var r=n.filter((function(r){var n=!0;return e.includes(r)?n=!1:(_D(t.type)||(n=n&&t.type===r.type),_D(t.url)||(n=n&&t.url===r.url),_D(t.name)||(n=n&&t.name===r.name),_D(t.legend)||(n=n&&t.legend===r.legend)),n}));e=e.concat(r)})),e}},{key:"getWFS",value:function(t){var e=[],r=t,n=this.layers_.filter((function(t){return t.type===Au}));return _D(r)&&(r=[]),mD(r)||(r=[r]),0===r.length?e=n:r.forEach((function(t){var r=n.filter((function(r){var n=!0;return e.includes(r)?n=!1:(_D(t.type)||(n=n&&t.type===r.type),_D(t.url)||(n=n&&t.url===r.url),_D(t.name)||(n=n&&t.name===r.name),_D(t.namespace)||(n=n&&t.namespace===r.namespace),_D(t.legend)||(n=n&&t.legend===r.legend),_D(t.cql)||(n=n&&t.cql===r.cql),_D(t.geometry)||(n=n&&t.geometry===r.geometry),_D(t.ids)||(n=n&&t.ids===r.ids),_D(t.version)||(n=n&&t.version===r.version)),n}));e=e.concat(r)})),e}},{key:"addWFS",value:function(t){var e=this,r=this.getBaseLayers().length>0;return t.forEach((function(t){if(t.type===Au&&!DD(e.layers_,t)){if(t.getImpl().addTo(e.facadeMap_),e.layers_.push(t),t.setZIndex(t.getZIndex()),null==t.getZIndex()){var n=e.layers_.length+o.Z_INDEX.WFS;t.setZIndex(n)}r||e.updateResolutionsFromBaseLayer()}})),this}},{key:"removeWFS",value:function(t){var e=this;return this.getWFS(t).forEach((function(t){e.layers_=e.layers_.filter((function(e){return!e.equals(t)})),t.getImpl().destroy(),t.fire(jl,[t])})),this}},{key:"getWMTS",value:function(t){var e=[],r=t,n=this.layers_.filter((function(t){return t.type===ku}));return _D(r)&&(r=[]),mD(r)||(r=[r]),0===r.length?e=n:r.forEach((function(t){var r=n.filter((function(r){var n=!0;return e.includes(r)?n=!1:(_D(t.type)||(n=n&&t.type===r.type),_D(t.url)||(n=n&&t.url===r.url),_D(t.name)||(n=n&&t.name===r.name),_D(t.matrixSet)||(n=n&&t.matrixSet===r.matrixSet),_D(t.legend)||(n=n&&t.legend===r.legend)),n}));e=e.concat(r)})),e}},{key:"addWMTS",value:function(t){var e=this,r=this.getBaseLayers().length>0;return t.forEach((function(t){if(t.type===ku&&!DD(e.layers_,t))if(t.getImpl().addTo(e.facadeMap_),e.layers_.push(t),!0!==t.transparent)t.getImpl().visibility=!r,r=!0,t.isVisible()&&e.updateResolutionsFromBaseLayer(),t.setZIndex(o.Z_INDEX_BASELAYER);else{if(null==t.getZIndex()){var n=e.layers_.length+o.Z_INDEX.WMTS;t.setZIndex(n)}r||e.updateResolutionsFromBaseLayer()}})),this}},{key:"removeWMTS",value:function(t){var e=this;return this.getWMTS(t).forEach((function(t){if(e.layers_=e.layers_.filter((function(e){return!e.equals(t)})),t.getImpl().destroy(),t.fire(jl,[t]),!0!==t.transparent){var r=e.facadeMap_.getBaseLayers();r.length>0&&r[0].setVisible(!0)}})),this}},{key:"getUnknowLayers_",value:function(t){var e=[],r=t,n=this.layers_.filter((function(t){return!Vu(t.type)}));return _D(r)&&(r=[]),mD(r)||(r=[r]),0===r.length?e=n:r.forEach((function(t){var r=n.filter((function(r){var n=!0;return e.includes(r)?n=!1:t instanceof Lc?n=t.equals(r):(_D(t.type)||(n=n&&t.type===r.type),_D(t.name)||(n=n&&t.name===r.name)),n}));e=e.concat(r)})),e}},{key:"addUnknowLayers_",value:function(t){var e=this,r=this.getBaseLayers().length>0;return t.forEach((function(t){if(!DD(e.layers_,t))if(t.getImpl().addTo(e.facadeMap_),e.layers_.push(t),!0!==t.transparent)t.setVisible(!r),r=!0,t.isVisible()&&e.updateResolutionsFromBaseLayer(),t.setZIndex(o.Z_INDEX_BASELAYER);else{if(t.setZIndex(t.getZIndex()),null==t.getZIndex()){var n=e.layers_.length+o.Z_INDEX[t.type];t.setZIndex(n)}r||e.updateResolutionsFromBaseLayer()}})),this}},{key:"removeUnknowLayers_",value:function(t){var e=this;t.forEach((function(t){if(DD(e.layers_,t)&&(e.layers_=e.layers_.filter((function(e){return!e.equals(t)})),t.getImpl().destroy(),t.fire(jl,[t]),!0!==t.transparent)){var r=e.facadeMap_.getBaseLayers();r.length>0&&r[0].setVisible(!0)}}))}},{key:"getMVT",value:function(t){var e=[],r=t,n=this.layers_.filter((function(t){return t.type===Uu}));return _D(r)&&(r=[]),mD(r)||(r=[r]),0===r.length?e=n:r.forEach((function(t){var r=n.filter((function(r){var n=!0;return e.includes(r)?n=!1:(_D(t.type)||(n=n&&t.type===r.type),_D(t.url)||(n=n&&t.url===r.url),_D(t.name)||(n=n&&t.name===r.name)),n}));e=e.concat(r)})),e}},{key:"removeMVT",value:function(t){var e=this;return this.getMVT(t).forEach((function(t){e.layers_=e.layers_.filter((function(e){return!e.equals(t)})),t.getImpl().destroy(),t.fire(jl,[t])})),this}},{key:"addMVT",value:function(t){var e=this,r=this.getBaseLayers().length>0;return t.forEach((function(t){if(t.type===Uu&&!DD(e.layers_,t)){if(t.getImpl().addTo(e.facadeMap_),e.layers_.push(t),t.setZIndex(t.getZIndex()),null==t.getZIndex()){var n=e.layers_.length+o.Z_INDEX.MVT;t.setZIndex(n)}r||e.updateResolutionsFromBaseLayer()}})),this}},{key:"getControls",value:function(t){var e=t,r=[],n=this.facadeMap_.getPanels().map((function(t){return t.getControls()}));n.length>0&&(n=n.reduce((function(t,e){return t.concat(e)})));var i=this.controls_.concat(n);_D(e)&&(e=[]),mD(e)||(e=[e]),0===e.length?r=i:e.forEach((function(t){r=r.concat(i.filter((function(e){var n=!1;return DD(r,e)||(xD(t)?n=t===e.name:t instanceof yu?n=t===e:bD(t)&&(n=t.name===e.name)),n})))}));var o=[];return r.forEach((function(t){o.map((function(t){return t.name})).includes(t.name)||o.push(t)})),o}},{key:"addControls",value:function(t){var e=this;return t.forEach((function(t){t instanceof Ru&&e.facadeMap_.addControls("panzoom"),DD(e.controls_,t)||e.controls_.push(t)})),this}},{key:"removeControls",value:function(t){var e=this;return this.getControls(t).forEach((function(t){_D(e.map_)||e.map_.removeControl(t.getImpl()),t.destroy(),e.controls_=e.controls_.filter((function(e){var r=e.constructor===t.constructor;return _D(e.equals)||(r=!e.equals(t)),r}))})),this}},{key:"setMaxExtent",value:function(t,e){var r=t;return _D(r)||mD(r)||!bD(r)||(r=[t.x.min,t.y.min,t.x.max,t.y.max]),this.getMapImpl().getView().set("extent",r),this.updateResolutionsFromBaseLayer(),_D(r)||!1===e||this.setBbox(r),this}},{key:"getMaxExtent",value:function(){var t=this.getMapImpl().getView().get("extent");return _D(t)?this.envolvedMaxExtent_:{x:{min:t[0],max:t[2]},y:{min:t[1],max:t[3]}}}},{key:"setBbox",value:function(t,e){var r;_D(t)&&_l(uu("exception").no_bbox),this.userBbox_=t,mD(t)?r=t:bD(t)&&(r=[t.x.min,t.y.min,t.x.max,t.y.max]);var n=this.getMapImpl();return n.updateSize(),n.getView().fit(r,e),this}},{key:"getBbox",value:function(){var t=null,e=this.getMapImpl(),r=e.getView();if(!_D(r.getCenter())){var n=r.calculateExtent(e.getSize());_D(n)||(t={x:{min:n[0],max:n[2]},y:{min:n[1],max:n[3]}})}return t}},{key:"setZoom",value:function(t){return _D(t)&&_l(uu("exception").no_zoom),this.getMapImpl().getView().setUserZoom(t),this}},{key:"getZoom",value:function(){var t=null,e=this.getMapImpl().getView(),r=e.getResolution(),n=this.getResolutions();if(_D(n))_D(r)||(t=e.getZoomForResolution(r));else for(var i=0,o=n.length;i=1e3&&r<=95e4?1e3*Math.round(r/1e3):r>=95e4?1e6*Math.round(r/1e6):Math.round(r)),r}},{key:"getExactScale",value:function(){var t=this.getMapImpl().getView().getResolution(),e=this.getProjection().units,r=ND(t,e);return Math.trunc(r)}},{key:"setProjection",value:function(t){_D(t)&&_l(uu("exception").no_projection);var e=Object(u.o)(t.code);_D(e)&&(e=new Tn.a(t));var r=this.getProjection(),n=Object(u.o)(r.code),i=this.facadeMap_.getBbox(),o=this.getMapImpl(),a=o.getView().getUserZoom(),s=new Bp({projection:e});if(s.setUserZoom(a),o.setView(s),this.facadeMap_.getWMS().forEach((function(e){e.updateMinMaxResolution(t)})),this.updateResolutionsFromBaseLayer(),!_D(i)){mD(i)||(i=[i.x.min,i.y.min,i.x.max,i.y.max]);var l=wh.transformExtent(i,n,e);l.includes(NaN)&&(l=e.getExtent()),this.facadeMap_.setBbox(l,{nearest:!0})}return this}},{key:"getProjection",value:function(){var t=this.getMapImpl().getView().getProjection(),e=null;return _D(t)||(e={code:t.getCode(),units:t.getUnits(),getExtent:function(){return t.getExtent()}}),e}},{key:"getMapImpl",value:function(){return this.map_}},{key:"removePopup",value:function(t){if(!_D(t)){var e=t.getImpl();this.getMapImpl().removeOverlay(e),t.fire(iu,[t]),this.facadeMap_.fire(iu,[t])}return this}},{key:"destroy",value:function(){this.layers_.length=0,this.controls_.length=0,this.popup_=null,this.options_=null,this.map_.setTarget(null),this.map_=null}},{key:"updateResolutionsFromBaseLayer",value:function(){var t=this,e=[],r=M.config.ZOOM_LEVELS,n=this.getProjection().units,i=this.getBaseLayers().filter((function(t){return t.isVisible()}))[0],o=null,a=null;_D(i)||(a=i.getImpl().getMinResolution(),o=i.getImpl().getMaxResolution(),r=i.getImpl().getNumZoomLevels()),null===this.userResolutions_&&(_D(a)||_D(o)?this.facadeMap_.calculateMaxExtent().then((function(i){if(!t._resolutionsBaseLayer&&null===t.userResolutions_){t.getMapImpl().updateSize();var o=t.getMapImpl().getSize();e=MD(i,o,r,n),t.setResolutions(e,!0),t._resolutionsEnvolvedExtent=!0,!1===t._calculatedResolutions&&(t._calculatedResolutions=!0,t.fire(Hl))}})).catch((function(t){throw t})):(e=RD(a,o,r),this.setResolutions(e,!0),this._resolutionsBaseLayer=!0,!1===this._calculatedResolutions&&(this._calculatedResolutions=!0,this.fire(Hl))))}},{key:"addLabel",value:function(t,e){return this.label.push(t),t.show(this.facadeMap_,e),this}},{key:"getLabel",value:function(){return this.label[0]}},{key:"getLabels",value:function(){return this.label}},{key:"removeLabel",value:function(t){var e=this,r=t;_D(this.label)||(_D(t)?(this.label.forEach((function(t){return e.removePopup(t.getPopup())})),this.label=[]):(mD(t)||(r=[t]),r.forEach((function(t){var r=e.label.findIndex((function(e){return e.text===t.text&&e.coord===t.coord}));-1!==r&&(e.removePopup(e.label[r].getPopup()),e.label.splice(r,1))}))))}},{key:"refresh",value:function(){return this.map_.updateSize(),this}},{key:"getContainer",value:function(){return this.map_.getOverlayContainerStopEvent()}},{key:"setFacadeMap",value:function(t){this.facadeMap_=t}},{key:"registerEvents_",value:function(){var t=this;this.facadeMap_.on(Hl,(function(){t.map_.updateSize()})),this.map_.on("singleclick",this.onMapClick_.bind(this)),this.map_.getView().on("change:resolution",this.zoomEvent_.bind(this)),this.map_.on("change:view",(function(e){e.oldValue.un("change:resolution",t.zoomEvent_.bind(t)),t.map_.getView().on("change:resolution",t.zoomEvent_.bind(t))}))}},{key:"zoomEvent_",value:function(t){this.getZoom()<=t.target.getZoom()&&this.facadeMap_.fire(Ql,t)}},{key:"onMapClick_",value:function(t){var e=t.pixel,r=this.map_.getCoordinateFromPixel(e),n=this.facadeMap_.getLabel();_D(n)||n.hide(),this.facadeMap_.fire(eu,[{pixel:e,coord:r,vendor:t}])}},{key:"onMapMove_",value:function(t){var e=t.pixel,r=this.map_.getCoordinateFromPixel(e);this.facadeMap_.fire(ru,[{pixel:e,coord:r,vendor:t}])}},{key:"getRotation",value:function(){var t,e=this.map_.getView();return _D(e)||(t=e.getRotation()),t}},{key:"setRotation",value:function(t){var e=this.map_.getView();_D(e)||e.setRotation(t)}},{key:"enableMouseWheel",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];_D(this.mouseWheelZoom_)||this.mouseWheelZoom_.setActive(t)}},{key:"enableDrag",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];_D(this.dragPan_)||this.dragPan_.setActive(t)}},{key:"getImageMap",value:function(){var t=this.map_.getViewport().querySelectorAll(".ol-layer canvas, canvas.ol-layer")[0],e=null;if(!dD(t))try{e=t.toDataURL()}catch(t){throw t}return e}}])&&Hp(e.prototype,r),n&&Hp(e,n),o}(il);nd.Z_INDEX={},nd.Z_INDEX_BASELAYER=0,nd.Z_INDEX.WMC=1,nd.Z_INDEX.WMS=1e3,nd.Z_INDEX.WMTS=2e3,nd.Z_INDEX.OSM=2e3,nd.Z_INDEX.Mapbox=2e3,nd.Z_INDEX.KML=3e3,nd.Z_INDEX.WFS=9999,nd.Z_INDEX.Vector=9999,nd.Z_INDEX.MVT=9999,nd.Z_INDEX.GeoJSON=9999;var id=nd,od=r(99),ad=r.n(od);r(139);function sd(t){return(sd="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ld(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&null==(r=e.find((function(e){return e instanceof o&&e.id===t})))){var n=e.map((function(t){return t.getChildren()})).reduce((function(t,e){return t.concat(e)}),[]).filter((function(t){return t instanceof o}));r=o.findGroupById(t,n)}return r}}],(r=[{key:"addTo",value:function(t){this.map=t,this.children_.forEach((function(e){e instanceof o&&e.addTo(t)})),this.fire(Cl)}},{key:"setVisible",value:function(t){this.getAllLayers().forEach((function(e){return!0===e.transparent&&e.setVisible(t)}))}},{key:"setZIndex",value:function(t){this.zIndex_=t;var e=Bd(this.getChildren()).reverse(),r=t;e.forEach((function(t){t.setZIndex(r),r+=1}))}},{key:"getZIndex",value:function(t){return this.zIndex_}},{key:"addChild",value:function(t,e){var r=this.getZIndex()+this.children_.length,n=t;_D(e)?this.children_.unshift(n):(this.children_.splice(e-1,0,n),r=this.getZIndex()+e),n instanceof o?n.parent=this:n instanceof Lc&&(n.setLayerGroup(this),n.setZIndex(r),_D(this.map)||this.map.getRootLayers().some((function(t){return t.equals(n)}))||(this.map.addLayers(n),n instanceof o&&this.map.addLayerGroup(n)))}},{key:"deleteChild",value:function(t){var e=t;e instanceof o?(e.parent=null,this.map.removeLayerGroup(e)):e instanceof Lc&&(this.map.removeLayers(e),this.ungroup(t))}},{key:"deleteChildren",value:function(t){t.forEach(this.deleteChild,this)}},{key:"ungroup",value:function(t){t.setLayerGroup(null),this.children_.remove(t)}},{key:"addChildren",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=t;Array.isArray(t)||(e=[e]),e.forEach(this.addChild,this)}},{key:"getChildren",value:function(){return this.children_}},{key:"getAllLayers",value:function(){var t=[];return this.getChildren().forEach((function(e){e instanceof Lc?t.push(e):e instanceof o&&(t=t.concat(e.getAllLayers()))})),t}},{key:"destroy",value:function(){this.map.removeLayers(this.getAllLayers())}}])&&Yd(e.prototype,r),n&&Yd(e,n),o}(il);function Jd(t){return(Jd="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function $d(t,e){for(var r=0;r input");_D(o)||i.setOpacity(parseFloat(o.value)),i.setVisible(!i.isVisible())}}else e.target.classList.contains("m-layerswitcher-transparency")?i.setOpacity(parseFloat(e.target.value)):e.target.classList.contains("m-layerswitcher-remove")&&this.facadeMap_.removeLayers(i)}}}},{key:"clickLayer",value:function(t){var e=t||window.event,r=e.target.getAttribute("data-group-id"),n=null;if(!_D(e.target)){var i=e.target.getAttribute("data-layer-name");if(_D(i)){if(!_D(r)){var o=e.target.getAttribute("data-group-id");n=Kd.findGroupById(o,this.facadeMap_.getLayerGroup()),e.target.classList.contains("m-check")?e.target.classList.contains("g-cartografia-check3")?n.setVisible(!1):n.setVisible(!0):(n.collapsed=!n.collapsed,this.renderPanel())}}else{e.stopPropagation();var a=this.facadeMap_.getLayers().filter((function(t){return t.name===i}))[0];if(_D(a)&&!_D(r)&&(a=(n=Kd.findGroupById(r,this.facadeMap_.getLayerGroup())).getChildren().find((function(t){return t instanceof Lc&&t.name===i}))),e.target.classList.contains("m-check")){if(!0===a.transparent||!a.isVisible()){var s=e.target.parentElement.parentElement.querySelector("div.tools > input");_D(s)||a.setOpacity(parseFloat(s.value)),a.setVisible(!a.isVisible())}}else e.target.classList.contains("m-layerswitcher-transparency")?a.setOpacity(parseFloat(e.target.value)):e.target.classList.contains("m-layerswitcher-remove")&&(_D(n)?this.facadeMap_.removeLayers(a):(a.getImpl().destroy(),n.removeChild(a)))}}this.renderPanel()}},{key:"renderPanel",value:function(){var t=this;Hw.getTemplateVariables(this.facadeMap_).then((function(e){var r=bu(Nd.a,{vars:e});t.registerImgErrorEvents_(r);var n=r.querySelector("div#".concat(o.PANEL_ID));t.panel.innerHTML=n.innerHTML}))}},{key:"registerEvents",value:function(){var t=this;if(!_D(this.facadeMap_)){var e=this.facadeMap_.getMapImpl();this.registerViewEvents_(e.getView()),this.registerLayersEvents_(e.getLayers()),e.on("change:view",(function(){return t.onViewChange_.bind(t)}))}}},{key:"unregisterEvents",value:function(){var t=this;if(!_D(this.facadeMap_)){var e=this.facadeMap_.getMapImpl();this.unregisterViewEvents_(e.getView()),this.unregisterLayersEvents_(e.getLayers()),e.un("change:view",(function(){return t.onViewChange_.bind(t)}))}}},{key:"registerViewEvents_",value:function(t){var e=this;t.on("change:resolution",(function(){return e.renderPanel.bind(e)}))}},{key:"registerLayersEvents_",value:function(t){var e=this;t.forEach(this.registerLayerEvents_.bind(this)),t.on("remove",(function(){return e.renderPanel.bind(e)})),t.on("add",(function(){return e.onAddLayer_.bind(e)}))}},{key:"registerLayerEvents_",value:function(t){var e=this;t.on("change:visible",(function(){return e.renderPanel.bind(e)})),t.on("change:extent",(function(){return e.renderPanel.bind(e)}))}},{key:"unregisterViewEvents_",value:function(t){var e=this;t.un("change:resolution",(function(){return e.renderPanel.bind(e)}))}},{key:"unregisterLayersEvents_",value:function(t){var e=this;t.forEach(this.unregisterLayerEvents_.bind(this)),t.un("remove",(function(){return e.renderPanel.bind(e)})),t.un("add",(function(){return e.onAddLayer_.bind(e)}))}},{key:"unregisterLayerEvents_",value:function(t){var e=this;t.un("change:visible",(function(){return e.renderPanel.bind(e)})),t.un("change:extent",(function(){return e.renderPanel.bind(e)}))}},{key:"onViewChange_",value:function(t){this.unregisterViewEvents_(t.oldValue);var e=this.facadeMap_.getMapImpl();this.registerViewEvents_(e.getView())}},{key:"onAddLayer_",value:function(t){this.registerLayerEvents_(t.element),this.renderPanel()}},{key:"registerImgErrorEvents_",value:function(t){var e=this,r=t.querySelectorAll("img");Array.prototype.forEach.call(r,(function(t){t.addEventListener("error",(function(t){var r=t.target.getAttribute("data-layer-name"),n=FD([M.config.THEME_URL,Lc.LEGEND_ERROR]),i=e.facadeMap_.getLayers().filter((function(t){return t.name===r}))[0];_D(i)||i.setLegendURL(n)}))}))}},{key:"setMap",value:function(t){Qd(ng(o.prototype),"setMap",this).call(this,t),this.renderPanel()}}])&&$d(e.prototype,r),n&&$d(e,n),o}(pd);ig.PANEL_ID="m-layerswitcher-panel";var og=ig,ag=r(31),sg=r(77),lg=r.n(sg),ug=function(){function t(t){this.rbush_=new lg.a(t),this.items_={}}return t.prototype.insert=function(t,e){var r={minX:t[0],minY:t[1],maxX:t[2],maxY:t[3],value:e};this.rbush_.insert(r),this.items_[Object(Gn.c)(e)]=r},t.prototype.load=function(t,e){for(var r=new Array(e.length),n=0,i=e.length;n=200&&s.status<300){var n=e.getType(),l=void 0;n==bg||n==xg?l=s.responseText:n==wg?(l=s.responseXML)||(l=(new DOMParser).parseFromString(s.responseText,"application/xml")):n==vg&&(l=s.response),l?o(e.readFeatures(l,{extent:r,featureProjection:i}),e.readProjection(l)):a()}else a()},s.onerror=a,s.send()}function Sg(t,e){return function(r,n,i,o,a){var s=this;Og(t,e,r,n,i,(function(t,e){s.addFeatures(t),void 0!==o&&o(t)}),a||Dn.c)}}var Ig=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Cg=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.feature=r,i.features=n,i}return Ig(e,t),e}(Ni.a),Tg=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{attributions:n.attributions,interpolate:!0,projection:void 0,state:Qn.a.READY,wrapX:void 0===n.wrapX||n.wrapX})||this).on,r.once,r.un,r.loader_=Dn.c,r.format_=n.format,r.overlaps_=void 0===n.overlaps||n.overlaps,r.url_=n.url,void 0!==n.loader?r.loader_=n.loader:void 0!==r.url_&&(Object(Ui.a)(r.format_,7),r.loader_=Sg(r.url_,r.format_)),r.strategy_=void 0!==n.strategy?n.strategy:_g;var i,o,a=void 0===n.useSpatialIndex||n.useSpatialIndex;return r.featuresRtree_=a?new ug:null,r.loadedExtentsRtree_=new ug,r.loadingExtentsCount_=0,r.nullGeometryFeatures_={},r.idIndex_={},r.uidIndex_={},r.featureChangeKeys_={},r.featuresCollection_=null,Array.isArray(n.features)?o=n.features:n.features&&(o=(i=n.features).getArray()),a||void 0!==i||(i=new Fi(o)),void 0!==o&&r.addFeaturesInternal(o),void 0!==i&&r.bindFeaturesCollection_(i),r}return Ig(e,t),e.prototype.addFeature=function(t){this.addFeatureInternal(t),this.changed()},e.prototype.addFeatureInternal=function(t){var e=Object(Gn.c)(t);if(this.addToIndex_(e,t)){this.setupChangeEvents_(e,t);var r=t.getGeometry();if(r){var n=r.getExtent();this.featuresRtree_&&this.featuresRtree_.insert(n,t)}else this.nullGeometryFeatures_[e]=t;this.dispatchEvent(new Cg(hg,t))}else this.featuresCollection_&&this.featuresCollection_.remove(t)},e.prototype.setupChangeEvents_=function(t,e){this.featureChangeKeys_[t]=[Object(Ci.a)(e,Di.a.CHANGE,this.handleFeatureChange_,this),Object(Ci.a)(e,Kn.a.PROPERTYCHANGE,this.handleFeatureChange_,this)]},e.prototype.addToIndex_=function(t,e){var r=!0,n=e.getId();return void 0!==n&&(n.toString()in this.idIndex_?r=!1:this.idIndex_[n.toString()]=e),r&&(Object(Ui.a)(!(t in this.uidIndex_),30),this.uidIndex_[t]=e),r},e.prototype.addFeatures=function(t){this.addFeaturesInternal(t),this.changed()},e.prototype.addFeaturesInternal=function(t){for(var e=[],r=[],n=[],i=0,o=t.length;i0},e.prototype.refresh=function(){this.clear(!0),this.loadedExtentsRtree_.clear(),t.prototype.refresh.call(this)},e.prototype.removeLoadedExtent=function(t){var e,r=this.loadedExtentsRtree_;r.forEachInExtent(t,(function(r){if(Object(mt.p)(r.extent,t))return e=r,!0})),e&&r.remove(e)},e.prototype.removeFeature=function(t){if(t){var e=Object(Gn.c)(t);e in this.nullGeometryFeatures_?delete this.nullGeometryFeatures_[e]:this.featuresRtree_&&this.featuresRtree_.remove(t),this.removeFeatureInternal(t)&&this.changed()}},e.prototype.removeFeatureInternal=function(t){var e=Object(Gn.c)(t),r=this.featureChangeKeys_[e];if(r){r.forEach(Ci.c),delete this.featureChangeKeys_[e];var n=t.getId();return void 0!==n&&delete this.idIndex_[n.toString()],delete this.uidIndex_[e],this.dispatchEvent(new Cg(dg,t)),t}},e.prototype.removeFromIdIndex_=function(t){var e=!1;for(var r in this.idIndex_)if(this.idIndex_[r]===t){delete this.idIndex_[r],e=!0;break}return e},e.prototype.setLoader=function(t){this.loader_=t},e.prototype.setUrl=function(t){Object(Ui.a)(this.format_,7),this.url_=t,this.setLoader(Sg(t,this.format_))},e}(cg.a),Pg=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Rg=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,wrapX:e.wrapX})||this;return r.resolution=void 0,r.distance=void 0!==e.distance?e.distance:20,r.minDistance=e.minDistance||0,r.interpolationRatio=0,r.features=[],r.geometryFunction=e.geometryFunction||function(t){var e=t.getGeometry();return Object(Ui.a)(e.getType()==fo.a.POINT,10),e},r.createCustomCluster_=e.createCluster,r.source=null,r.boundRefresh_=r.refresh.bind(r),r.updateDistance(r.distance,r.minDistance),r.setSource(e.source||null),r}return Pg(e,t),e.prototype.clear=function(e){this.features.length=0,t.prototype.clear.call(this,e)},e.prototype.getDistance=function(){return this.distance},e.prototype.getSource=function(){return this.source},e.prototype.loadFeatures=function(t,e,r){this.source.loadFeatures(t,e,r),e!==this.resolution&&(this.resolution=e,this.refresh())},e.prototype.setDistance=function(t){this.updateDistance(t,this.minDistance)},e.prototype.setMinDistance=function(t){this.updateDistance(this.distance,t)},e.prototype.getMinDistance=function(){return this.minDistance},e.prototype.setSource=function(t){this.source&&this.source.removeEventListener(Di.a.CHANGE,this.boundRefresh_),this.source=t,t&&t.addEventListener(Di.a.CHANGE,this.boundRefresh_),this.refresh()},e.prototype.refresh=function(){this.clear(),this.cluster(),this.addFeatures(this.features)},e.prototype.updateDistance=function(t,e){var r=0===t?0:Math.min(e,t)/t,n=t!==this.distance||this.interpolationRatio!==r;this.distance=t,this.minDistance=e,this.interpolationRatio=r,n&&this.refresh()},e.prototype.cluster=function(){if(void 0!==this.resolution&&this.source)for(var t=Object(mt.k)(),e=this.distance*this.resolution,r=this.source.getFeatures(),n={},i=0,o=r.length;i=0;--n){var i=this.geometryFunction(t[n]);i?Object(Wn.a)(r,i.getCoordinates()):t.splice(n,1)}Object(Wn.k)(r,1/t.length);var o=Object(mt.x)(e),a=this.interpolationRatio,s=new aa([r[0]*(1-a)+o[0]*a,r[1]*(1-a)+o[1]*a]);return this.createCustomCluster_?this.createCustomCluster_(s,t):new Wc({geometry:s,features:t})},e}(Tg),Lg="top",Mg="middle",Ng="bottom",Ag="alphabetic",kg="hanging",jg="ideographic",Fg="left",Dg="center",Gg="right",Ug="justify",Bg=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null,this.lineCap_=e.lineCap,this.lineDash_=void 0!==e.lineDash?e.lineDash:null,this.lineDashOffset_=e.lineDashOffset,this.lineJoin_=e.lineJoin,this.miterLimit_=e.miterLimit,this.width_=e.width}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0,lineCap:this.getLineCap(),lineDash:this.getLineDash()?this.getLineDash().slice():void 0,lineDashOffset:this.getLineDashOffset(),lineJoin:this.getLineJoin(),miterLimit:this.getMiterLimit(),width:this.getWidth()})},t.prototype.getColor=function(){return this.color_},t.prototype.getLineCap=function(){return this.lineCap_},t.prototype.getLineDash=function(){return this.lineDash_},t.prototype.getLineDashOffset=function(){return this.lineDashOffset_},t.prototype.getLineJoin=function(){return this.lineJoin_},t.prototype.getMiterLimit=function(){return this.miterLimit_},t.prototype.getWidth=function(){return this.width_},t.prototype.setColor=function(t){this.color_=t},t.prototype.setLineCap=function(t){this.lineCap_=t},t.prototype.setLineDash=function(t){this.lineDash_=t},t.prototype.setLineDashOffset=function(t){this.lineDashOffset_=t},t.prototype.setLineJoin=function(t){this.lineJoin_=t},t.prototype.setMiterLimit=function(t){this.miterLimit_=t},t.prototype.setWidth=function(t){this.width_=t},t}(),zg=function(){function t(t){var e=t||{};this.color_=void 0!==e.color?e.color:null}return t.prototype.clone=function(){var e=this.getColor();return new t({color:Array.isArray(e)?e.slice():e||void 0})},t.prototype.getColor=function(){return this.color_},t.prototype.setColor=function(t){this.color_=t},t}(),Vg="point",qg="line",Yg=function(){function t(t){var e=t||{};this.font_=e.font,this.rotation_=e.rotation,this.rotateWithView_=e.rotateWithView,this.scale_=e.scale,this.scaleArray_=Object(Aa.d)(void 0!==e.scale?e.scale:1),this.text_=e.text,this.textAlign_=e.textAlign,this.textBaseline_=e.textBaseline,this.fill_=void 0!==e.fill?e.fill:new zg({color:"#333"}),this.maxAngle_=void 0!==e.maxAngle?e.maxAngle:Math.PI/4,this.placement_=void 0!==e.placement?e.placement:Vg,this.overflow_=!!e.overflow,this.stroke_=void 0!==e.stroke?e.stroke:null,this.offsetX_=void 0!==e.offsetX?e.offsetX:0,this.offsetY_=void 0!==e.offsetY?e.offsetY:0,this.backgroundFill_=e.backgroundFill?e.backgroundFill:null,this.backgroundStroke_=e.backgroundStroke?e.backgroundStroke:null,this.padding_=void 0===e.padding?null:e.padding}return t.prototype.clone=function(){var e=this.getScale();return new t({font:this.getFont(),placement:this.getPlacement(),maxAngle:this.getMaxAngle(),overflow:this.getOverflow(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(e)?e.slice():e,text:this.getText(),textAlign:this.getTextAlign(),textBaseline:this.getTextBaseline(),fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,offsetX:this.getOffsetX(),offsetY:this.getOffsetY(),backgroundFill:this.getBackgroundFill()?this.getBackgroundFill().clone():void 0,backgroundStroke:this.getBackgroundStroke()?this.getBackgroundStroke().clone():void 0,padding:this.getPadding()||void 0})},t.prototype.getOverflow=function(){return this.overflow_},t.prototype.getFont=function(){return this.font_},t.prototype.getMaxAngle=function(){return this.maxAngle_},t.prototype.getPlacement=function(){return this.placement_},t.prototype.getOffsetX=function(){return this.offsetX_},t.prototype.getOffsetY=function(){return this.offsetY_},t.prototype.getFill=function(){return this.fill_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getScaleArray=function(){return this.scaleArray_},t.prototype.getStroke=function(){return this.stroke_},t.prototype.getText=function(){return this.text_},t.prototype.getTextAlign=function(){return this.textAlign_},t.prototype.getTextBaseline=function(){return this.textBaseline_},t.prototype.getBackgroundFill=function(){return this.backgroundFill_},t.prototype.getBackgroundStroke=function(){return this.backgroundStroke_},t.prototype.getPadding=function(){return this.padding_},t.prototype.setOverflow=function(t){this.overflow_=t},t.prototype.setFont=function(t){this.font_=t},t.prototype.setMaxAngle=function(t){this.maxAngle_=t},t.prototype.setOffsetX=function(t){this.offsetX_=t},t.prototype.setOffsetY=function(t){this.offsetY_=t},t.prototype.setPlacement=function(t){this.placement_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setFill=function(t){this.fill_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t,this.scaleArray_=Object(Aa.d)(void 0!==t?t:1)},t.prototype.setStroke=function(t){this.stroke_=t},t.prototype.setText=function(t){this.text_=t},t.prototype.setTextAlign=function(t){this.textAlign_=t},t.prototype.setTextBaseline=function(t){this.textBaseline_=t},t.prototype.setBackgroundFill=function(t){this.backgroundFill_=t},t.prototype.setBackgroundStroke=function(t){this.backgroundStroke_=t},t.prototype.setPadding=function(t){this.padding_=t},t}(),Wg="fraction",Xg="pixels",Hg="bottom-left",Zg="bottom-right",Kg="top-left",Jg="top-right",$g=r(14),Qg=function(){function t(t){this.opacity_=t.opacity,this.rotateWithView_=t.rotateWithView,this.rotation_=t.rotation,this.scale_=t.scale,this.scaleArray_=Object(Aa.d)(t.scale),this.displacement_=t.displacement}return t.prototype.clone=function(){var e=this.getScale();return new t({opacity:this.getOpacity(),scale:Array.isArray(e)?e.slice():e,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),displacement:this.getDisplacement().slice()})},t.prototype.getOpacity=function(){return this.opacity_},t.prototype.getRotateWithView=function(){return this.rotateWithView_},t.prototype.getRotation=function(){return this.rotation_},t.prototype.getScale=function(){return this.scale_},t.prototype.getScaleArray=function(){return this.scaleArray_},t.prototype.getDisplacement=function(){return this.displacement_},t.prototype.getAnchor=function(){return Object(Gn.b)()},t.prototype.getImage=function(t){return Object(Gn.b)()},t.prototype.getHitDetectionImage=function(){return Object(Gn.b)()},t.prototype.getPixelRatio=function(t){return 1},t.prototype.getImageState=function(){return Object(Gn.b)()},t.prototype.getImageSize=function(){return Object(Gn.b)()},t.prototype.getOrigin=function(){return Object(Gn.b)()},t.prototype.getSize=function(){return Object(Gn.b)()},t.prototype.setDisplacement=function(t){this.displacement_=t},t.prototype.setOpacity=function(t){this.opacity_=t},t.prototype.setRotateWithView=function(t){this.rotateWithView_=t},t.prototype.setRotation=function(t){this.rotation_=t},t.prototype.setScale=function(t){this.scale_=t,this.scaleArray_=Object(Aa.d)(t)},t.prototype.listenImageChange=function(t){Object(Gn.b)()},t.prototype.load=function(){Object(Gn.b)()},t.prototype.unlistenImageChange=function(t){Object(Gn.b)()},t}(),ty=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ey=null,ry=function(t){function e(e,r,n,i,o,a){var s=t.call(this)||this;return s.hitDetectionImage_=null,s.image_=e||new Image,null!==i&&(s.image_.crossOrigin=i),s.canvas_={},s.color_=a,s.unlisten_=null,s.imageState_=o,s.size_=n,s.src_=r,s.tainted_,s}return ty(e,t),e.prototype.isTainted_=function(){if(void 0===this.tainted_&&this.imageState_===$g.a.LOADED){ey||(ey=Object(oi.a)(1,1)),ey.drawImage(this.image_,0,0);try{ey.getImageData(0,0,1,1),this.tainted_=!1}catch(t){ey=null,this.tainted_=!0}}return!0===this.tainted_},e.prototype.dispatchChangeEvent_=function(){this.dispatchEvent(Di.a.CHANGE)},e.prototype.handleImageError_=function(){this.imageState_=$g.a.ERROR,this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.handleImageLoad_=function(){this.imageState_=$g.a.LOADED,this.size_?(this.image_.width=this.size_[0],this.image_.height=this.size_[1]):this.size_=[this.image_.width,this.image_.height],this.unlistenImage_(),this.dispatchChangeEvent_()},e.prototype.getImage=function(t){return this.replaceColor_(t),this.canvas_[t]?this.canvas_[t]:this.image_},e.prototype.getPixelRatio=function(t){return this.replaceColor_(t),this.canvas_[t]?t:1},e.prototype.getImageState=function(){return this.imageState_},e.prototype.getHitDetectionImage=function(){if(!this.hitDetectionImage_)if(this.isTainted_()){var t=this.size_[0],e=this.size_[1],r=Object(oi.a)(t,e);r.fillRect(0,0,t,e),this.hitDetectionImage_=r.canvas}else this.hitDetectionImage_=this.image_;return this.hitDetectionImage_},e.prototype.getSize=function(){return this.size_},e.prototype.getSrc=function(){return this.src_},e.prototype.load=function(){if(this.imageState_==$g.a.IDLE){this.imageState_=$g.a.LOADING;try{this.image_.src=this.src_}catch(t){this.handleImageError_()}this.unlisten_=Object(op.b)(this.image_,this.handleImageLoad_.bind(this),this.handleImageError_.bind(this))}},e.prototype.replaceColor_=function(t){if(this.color_&&!this.canvas_[t]&&this.imageState_===$g.a.LOADED){var e=document.createElement("canvas");this.canvas_[t]=e,e.width=Math.ceil(this.image_.width*t),e.height=Math.ceil(this.image_.height*t);var r=e.getContext("2d");if(r.scale(t,t),r.drawImage(this.image_,0,0),r.globalCompositeOperation="multiply","multiply"===r.globalCompositeOperation||this.isTainted_())r.fillStyle=Object(Bn.b)(this.color_),r.fillRect(0,0,e.width/t,e.height/t),r.globalCompositeOperation="destination-in",r.drawImage(this.image_,0,0);else{for(var n=r.getImageData(0,0,e.width,e.height),i=n.data,o=this.color_[0]/255,a=this.color_[1]/255,s=this.color_[2]/255,l=this.color_[3],u=0,c=i.length;u0,6);var c=void 0!==n.src?$g.a.IDLE:$g.a.LOADED;return r.color_=void 0!==n.color?Object(Bn.a)(n.color):null,r.iconImage_=function(t,e,r,n,i,o){var a=qn.get(e,n,o);return a||(a=new ry(t,e,r,n,i,o),qn.set(e,n,o,a)),a}(l,u,void 0!==r.imgSize_?r.imgSize_:null,r.crossOrigin_,c,r.color_),r.offset_=void 0!==n.offset?n.offset:[0,0],r.offsetOrigin_=void 0!==n.offsetOrigin?n.offsetOrigin:Kg,r.origin_=null,r.size_=void 0!==n.size?n.size:null,r}return ny(e,t),e.prototype.clone=function(){var t=this.getScale();return new e({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,crossOrigin:this.crossOrigin_,imgSize:this.imgSize_,offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,opacity:this.getOpacity(),rotateWithView:this.getRotateWithView(),rotation:this.getRotation(),scale:Array.isArray(t)?t.slice():t,size:null!==this.size_?this.size_.slice():void 0,src:this.getSrc()})},e.prototype.getAnchor=function(){var t=this.normalizedAnchor_;if(!t){t=this.anchor_;var e=this.getSize();if(this.anchorXUnits_==Wg||this.anchorYUnits_==Wg){if(!e)return null;t=this.anchor_.slice(),this.anchorXUnits_==Wg&&(t[0]*=e[0]),this.anchorYUnits_==Wg&&(t[1]*=e[1])}if(this.anchorOrigin_!=Kg){if(!e)return null;t===this.anchor_&&(t=this.anchor_.slice()),this.anchorOrigin_!=Jg&&this.anchorOrigin_!=Zg||(t[0]=-t[0]+e[0]),this.anchorOrigin_!=Hg&&this.anchorOrigin_!=Zg||(t[1]=-t[1]+e[1])}this.normalizedAnchor_=t}var r=this.getDisplacement();return[t[0]-r[0],t[1]+r[1]]},e.prototype.setAnchor=function(t){this.anchor_=t,this.normalizedAnchor_=null},e.prototype.getColor=function(){return this.color_},e.prototype.getImage=function(t){return this.iconImage_.getImage(t)},e.prototype.getPixelRatio=function(t){return this.iconImage_.getPixelRatio(t)},e.prototype.getImageSize=function(){return this.iconImage_.getSize()},e.prototype.getImageState=function(){return this.iconImage_.getImageState()},e.prototype.getHitDetectionImage=function(){return this.iconImage_.getHitDetectionImage()},e.prototype.getOrigin=function(){if(this.origin_)return this.origin_;var t=this.offset_;if(this.offsetOrigin_!=Kg){var e=this.getSize(),r=this.iconImage_.getSize();if(!e||!r)return null;t=t.slice(),this.offsetOrigin_!=Jg&&this.offsetOrigin_!=Zg||(t[0]=r[0]-e[0]-t[0]),this.offsetOrigin_!=Hg&&this.offsetOrigin_!=Zg||(t[1]=r[1]-e[1]-t[1])}return this.origin_=t,this.origin_},e.prototype.getSrc=function(){return this.iconImage_.getSrc()},e.prototype.getSize=function(){return this.size_?this.size_:this.iconImage_.getSize()},e.prototype.listenImageChange=function(t){this.iconImage_.addEventListener(Di.a.CHANGE,t)},e.prototype.load=function(){this.iconImage_.load()},e.prototype.unlistenImageChange=function(t){this.iconImage_.removeEventListener(Di.a.CHANGE,t)},e}(Qg),oy=function(){function t(){}return t.prototype.drawCustom=function(t,e,r,n){},t.prototype.drawGeometry=function(t){},t.prototype.setStyle=function(t){},t.prototype.drawCircle=function(t,e){},t.prototype.drawFeature=function(t,e){},t.prototype.drawGeometryCollection=function(t,e){},t.prototype.drawLineString=function(t,e){},t.prototype.drawMultiLineString=function(t,e){},t.prototype.drawMultiPoint=function(t,e){},t.prototype.drawMultiPolygon=function(t,e){},t.prototype.drawPoint=function(t,e){},t.prototype.drawPolygon=function(t,e){},t.prototype.drawText=function(t,e){},t.prototype.setFillStrokeStyle=function(t,e){},t.prototype.setImageStyle=function(t,e){},t.prototype.setTextStyle=function(t,e){},t}();function ay(t){return Array.isArray(t)?Object(Bn.e)(t):t}var sy=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ly=function(t){function e(e,r,n,i,o,a,s){var l=t.call(this)||this;return l.context_=e,l.pixelRatio_=r,l.extent_=n,l.transform_=i,l.viewRotation_=o,l.squaredTolerance_=a,l.userTransform_=s,l.contextFillState_=null,l.contextStrokeState_=null,l.contextTextState_=null,l.fillState_=null,l.strokeState_=null,l.image_=null,l.imageAnchorX_=0,l.imageAnchorY_=0,l.imageHeight_=0,l.imageOpacity_=0,l.imageOriginX_=0,l.imageOriginY_=0,l.imageRotateWithView_=!1,l.imageRotation_=0,l.imageScale_=[0,0],l.imageWidth_=0,l.text_="",l.textOffsetX_=0,l.textOffsetY_=0,l.textRotateWithView_=!1,l.textRotation_=0,l.textScale_=[0,0],l.textFillState_=null,l.textStrokeState_=null,l.textState_=null,l.pixelCoordinates_=[],l.tmpLocalTransform_=Object(Un.d)(),l}return sy(e,t),e.prototype.drawImages_=function(t,e,r,n){if(this.image_){var i=Ro(t,e,r,n,this.transform_,this.pixelCoordinates_),o=this.context_,a=this.tmpLocalTransform_,s=o.globalAlpha;1!=this.imageOpacity_&&(o.globalAlpha=s*this.imageOpacity_);var l=this.imageRotation_;this.imageRotateWithView_&&(l+=this.viewRotation_);for(var u=0,c=i.length;u0&&void 0!==arguments[0]?arguments[0]:{};Oy(this,o);var n=document.createElement("canvas"),a=Number(r.scale)>0?Number(r.scale):1,s=a*ni.a||ni.a,l=n.getContext("2d");if(r.image){r.image.load();var u=r.image.getImage();u.width?(n.width=Math.round(u.width*s),n.height=Math.round(u.height*s),l.globalAlpha="number"==typeof r.opacity?r.opacity:1,l.drawImage(u,0,0,u.width,u.height,0,0,n.width,n.height),e=l.createPattern(n,"repeat")):(e=[0,0,0,0],u.onload=function(){n.width=Math.round(u.width*s),n.height=Math.round(u.height*s),l.globalAlpha="number"==typeof r.opacity?r.opacity:1,l.drawImage(u,0,0,u.width,u.height,0,0,n.width,n.height),e=l.createPattern(n,"repeat"),this.color_=e,this.checksum_=void 0})}else{var c=o.getPattern(r);if(n.width=Math.round(c.width*s),n.height=Math.round(c.height*s),l.beginPath(),r.fill&&(l.fillStyle=Object(Bn.b)(r.fill.getColor()),l.fillRect(0,0,n.width,n.height)),l.scale(s,s),l.lineCap="round",l.lineWidth=c.stroke||1,l.fillStyle=Object(Bn.b)(r.color||"#000"),l.strokeStyle=Object(Bn.b)(r.color||"#000"),c.circles)for(var h=0;h180&&(a-=360),a*=Math.PI/180;var s=Math.cos(a),l=Math.sin(a);if(Math.abs(l)<1e-4)r.width=n,r.height=n,r.lines=[[0,.5,n,.5]],r.repeat=[[0,0],[0,n]];else if(Math.abs(s)<1e-4)r.height=n,r.width=n,r.lines=[[.5,0,.5,n]],r.repeat=[[0,0],[n,0]],"cross"===e.pattern&&(r.lines.push([0,.5,n,.5]),r.repeat.push([0,n]));else{r.width=Math.round(Math.abs(n/l))||1,r.height=Math.round(Math.abs(n/s))||1;var u=r.width,c=r.height;"cross"===e.pattern?(r.lines=[[-u,-c,2*u,2*c],[2*u,-c,-u,2*c]],r.repeat=[[0,0]]):s*l>0?(r.lines=[[-u,-c,2*u,2*c]],r.repeat=[[0,0],[u,0],[0,c]]):(r.lines=[[2*u,-c,-u,2*c]],r.repeat=[[0,0],[-u,0],[0,c]])}r.stroke=0===e.size?0:e.size||4}return r}},{key:"addPattern",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};o.patterns[t||e.char]={width:e.width||e.size||10,height:e.height||e.size||10,font:e.font,char:e.char,circles:e.circles,lines:e.lines,repeat:e.repeat,stroke:e.stroke,angle:e.angle,fill:e.fill}}}],(r=[{key:"clone",value:function(){return new o(this.options_)}},{key:"getImage",value:function(){return this.canvas_}}])&&Sy(e.prototype,r),n&&Sy(e,n),o}(zg);function Ly(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function My(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};Ly(this,t),this.options_=e,this.layer_=null,this.updateFacadeOptions(e)}var e,r,n;return e=t,n=[{key:"getCanvasSize",value:function(){return[100,100]}}],(r=[{key:"updateFacadeOptions",value:function(){}},{key:"applyToLayer",value:function(t){this.layer_=t,t.getFeatures().forEach(this.applyToFeature,this)}},{key:"applyToFeature",value:function(t){t.getImpl().getOLFeature().setStyle(this.olStyleFn_)}},{key:"updateCanvas",value:function(e){var r=t.getCanvasSize(),n=xy(e.getContext("2d"),{size:r});n.setStyle(this.olStyleFn_()[0]),this.drawGeometryToCanvas(n)}},{key:"drawGeometryToCanvas",value:function(t){}},{key:"clone",value:function(){return new t(Object.assign({},this.options_))}}])&&My(e.prototype,r),n&&My(e,n),t}();function Ay(t){return(Ay="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ky(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function jy(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};return ky(this,o),(t=i.call(this,e)).updateFacadeOptions(e),t}return e=o,n=[{key:"getValue",value:function(t,e,r){var n=/^\{\{([^}]+)\}\}$/,i=t;if(n.test(t)||vD(t))if(e instanceof Wc||e instanceof lh){var o=cG.olFeature2Facade(e,!1);if(n.test(t)){var a=t.replace(n,"$1");i=o.getAttribute(a)}else if(vD(t)){var s;_D(r)||(s=r.getImpl().getMap()),i=t(o,s)}}else i=void 0;return _D(i)&&(i=void 0),i}}],(r=[{key:"applyToLayer",value:function(t){this.layer_=t;var e=t.getImpl().getOLLayer();_D(e)||e.setStyle(this.olStyleFn_)}},{key:"applyToFeature",value:function(t){t.getImpl().getOLFeature().setStyle(this.olStyleFn_)}},{key:"olStyleFn",get:function(){return this.olStyleFn_}}])&&jy(e.prototype,r),n&&jy(e,n),o}(Ny),zy=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Vy=function(t){function e(e){var r=this,n=void 0!==e.rotateWithView&&e.rotateWithView;return(r=t.call(this,{opacity:1,rotateWithView:n,rotation:void 0!==e.rotation?e.rotation:0,scale:void 0!==e.scale?e.scale:1,displacement:void 0!==e.displacement?e.displacement:[0,0]})||this).canvas_=void 0,r.hitDetectionCanvas_=null,r.fill_=void 0!==e.fill?e.fill:null,r.origin_=[0,0],r.points_=e.points,r.radius_=void 0!==e.radius?e.radius:e.radius1,r.radius2_=e.radius2,r.angle_=void 0!==e.angle?e.angle:0,r.stroke_=void 0!==e.stroke?e.stroke:null,r.size_=null,r.renderOptions_=null,r.render(),r}return zy(e,t),e.prototype.clone=function(){var t=this.getScale(),r=new e({fill:this.getFill()?this.getFill().clone():void 0,points:this.getPoints(),radius:this.getRadius(),radius2:this.getRadius2(),angle:this.getAngle(),stroke:this.getStroke()?this.getStroke().clone():void 0,rotation:this.getRotation(),rotateWithView:this.getRotateWithView(),scale:Array.isArray(t)?t.slice():t,displacement:this.getDisplacement().slice()});return r.setOpacity(this.getOpacity()),r},e.prototype.getAnchor=function(){var t=this.size_;if(!t)return null;var e=this.getDisplacement();return[t[0]/2-e[0],t[1]/2+e[1]]},e.prototype.getAngle=function(){return this.angle_},e.prototype.getFill=function(){return this.fill_},e.prototype.getHitDetectionImage=function(){return this.hitDetectionCanvas_||this.createHitDetectionCanvas_(this.renderOptions_),this.hitDetectionCanvas_},e.prototype.getImage=function(t){var e=this.canvas_[t];if(!e){var r=this.renderOptions_,n=Object(oi.a)(r.size*t,r.size*t);this.draw_(r,n,t),e=n.canvas,this.canvas_[t]=e}return e},e.prototype.getPixelRatio=function(t){return t},e.prototype.getImageSize=function(){return this.size_},e.prototype.getImageState=function(){return $g.a.LOADED},e.prototype.getOrigin=function(){return this.origin_},e.prototype.getPoints=function(){return this.points_},e.prototype.getRadius=function(){return this.radius_},e.prototype.getRadius2=function(){return this.radius2_},e.prototype.getSize=function(){return this.size_},e.prototype.getStroke=function(){return this.stroke_},e.prototype.listenImageChange=function(t){},e.prototype.load=function(){},e.prototype.unlistenImageChange=function(t){},e.prototype.calculateLineJoinSize_=function(t,e,r){if(0===e||this.points_===1/0||"bevel"!==t&&"miter"!==t)return e;var n=this.radius_,i=void 0===this.radius2_?n:this.radius2_;if(n0&&void 0!==arguments[0]?arguments[0]:{};return tm(this,o),i.call(this,t)}return e=o,(r=[{key:"clone",value:function(){var t=this.getGeometry();return t&&t.clone&&(t=t.clone()),new o({geometry:t,fill:this.getFill()?this.getFill().clone():void 0,image:this.getImage()?this.getImage().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,text:this.getText()?this.getText().clone():void 0,zIndex:this.getZIndex()})}}])&&em(e.prototype,r),n&&em(e,n),o}($y);function sm(t){return(sm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function lm(t,e){for(var r=0;rs.DEFAULT_WIDTH_POLYGON&&n.getStroke().setWidth(s.DEFAULT_WIDTH_POLYGON),r.setStyle(n),this.drawGeometryToCanvas(r)}},{key:"drawGeometryToCanvas",value:function(t){var e=s.getCanvasSize(),r=Math.floor(e[0]),n=Math.floor(e[1]),i=e[0]-r,o=e[1]-n;t.drawGeometry(new Oa([[[i+3,o+3],[r-3,o+3],[r-3,n-3],[i+3,n-3],[i+3,o+3]]]))}}])&&lm(e.prototype,r),o&&lm(e,o),s}(By);pm.DEFAULT_WIDTH_POLYGON=3;var dm=pm;function gm(t){return(gm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ym(t){return function(t){if(Array.isArray(t))return mm(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return mm(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return mm(t,e)}(t)||function(){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 mm(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&(_D(i[l])&&(i[l]={}),o.setValue(i[l],a.slice(1,s),n))}},{key:"deserialize",value:function(t){var e=decodeURIComponent(escape(window.atob(t))),r=JSON.parse(e),n=r.parameters,i=r.deserializedMethod;return new Function("serializedParams","return ".concat(i,"(serializedParams)"))(n)}}],(r=[{key:"apply",value:function(t){this.layer_=t,this.getImpl().applyToLayer(t),this.updateCanvas()}},{key:"unapply",value:function(t){}},{key:"get",value:function(t){var e;if(e=this.options_[t],_D(e)){var r=t.split(".");r.length>1&&(e=r.reduce((function(t,e){var r;return _D(t)||(r=t[e],t instanceof o&&(r=t.get(e))),r}),this))}return e}},{key:"set",value:function(t,e){var r=this.get(t);return o.setValue(this.options_,t,e),_D(this.layer_)||this.getImpl().updateFacadeOptions(this.options_),_D(this.feature_)||this.applyToFeature(this.feature_),this.fire(Zl,[t,r,e]),this.refresh(),this}},{key:"refresh",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(_D(t)||(this.layer_=t),!_D(this.layer_)&&(this.apply(this.layer_),this.updateCanvas(),!_D(this.layer_.getImpl().getMap()))){var e=this.layer_.getImpl().getMap().getControls("layerswitcher")[0];_D(e)||e.render()}}},{key:"getOptions",value:function(){return this.options_}},{key:"toImage",value:function(){var t,e=this;if(_D(this.updateCanvasPromise_))if(_D(this.options_.icon)||_D(this.options_.icon.src))t=this.canvas_.toDataURL("png");else{var r=new Image;r.crossOrigin="Anonymous";var n=this.canvas_;r.onload=function(){n.getContext("2d").drawImage(e,0,0,50,50)},r.src=this.options_.icon.src,t=this.canvas_.toDataURL("png")}else t=this.updateCanvasPromise_.then((function(){return e.canvas_.toDataURL("png")}));return t}},{key:"updateCanvas",value:function(){this.updateCanvasPromise_=this.getImpl().updateCanvas(this.canvas_)}},{key:"equals",value:function(t){return this.constructor===t.constructor}},{key:"clone",value:function(){var t={};HD(t,this.options_);var e=new(0,this.getImpl().constructor)(t);return new this.constructor(t,e)}},{key:"toJSON",value:function(){return{parameters:[$D(this.getOptions())],deserializedMethod:this.getDeserializedMethod_()}}},{key:"serialize",value:function(){return window.btoa(unescape(encodeURIComponent(JSON.stringify(this))))}},{key:"canvas",get:function(){return this.canvas_}}])&&_m(e.prototype,r),n&&_m(e,n),o}(Il);function Om(t){return(Om="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Sm(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{};Vm(this,o);var r=e,n=new dm(r);return t=i.call(this,r,n),_D(r)&&(r=o.DEFAULT_NULL),r=HD({},r),t}return e=o,(r=[{key:"getDeserializedMethod_",value:function(){return"((serializedParameters) => M.style.Simple.deserialize(serializedParameters, 'M.style.Polygon'))"}}])&&qm(e.prototype,r),n&&qm(e,n),o}(Bm);Zm.DEFAULT_NULL={fill:{color:"rgba(255, 255, 255, 0.4)",opacity:.4},stroke:{color:"#3399CC",width:1.5}};var Km=Zm;function Jm(t){return(Jm="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function $m(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Qm(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};$m(this,o);var r=0;return e.stroke&&(r=e.stroke.getWidth()),t=i.call(this,{radius:e.radius,fill:e.fill,rotation:e.rotation,rotateWithView:e.rotateWithView}),"number"==typeof e.opacity&&t.setOpacity(e.opacity),t.color_=e.color,t.fontSize_=e.fontSize||1,t.stroke_=e.stroke,t.fill_=e.fill,t.radius_=e.radius-r,t.form_=e.form||"none",t.gradient_=e.gradient,t.offset_=[e.offsetX?e.offsetX:0,e.offsetY?e.offsetY:0],t.glyph_=t.getGlyph(e.glyph)||"",t.renderMaker(),t}return e=o,n=[{key:"addDefs",value:function(t,e){var r=t;if("string"==typeof t&&(r={font:t,name:t,copyright:""}),!r.font||"string"!=typeof r.font)throw new Error("bad font def");var n=r.font;o.defs.fonts[n]=r,Object.keys(e).forEach((function(t){var n=e[t];"string"==typeof n&&1===n.length&&(n={char:n}),o.defs.glyphs[t]={font:r.font,char:n.char||"".concat(String.fromCharCode(n.code))||"",theme:n.theme||r.name,name:n.name||t,search:n.search||""}}))}}],(r=[{key:"clone",value:function(){var t=new o({glyph:"",color:this.color_,fontSize:this.fontSize_,stroke:this.stroke_,fill:this.fill_,radius:this.radius_+(this.stroke_?this.stroke_.getWidth():0),form:this.form_,gradient:this.gradient_,offsetX:this.offset_[0],offsetY:this.offset_[1],opacity:this.getOpacity(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView()});return t.setScale(this.getScale()),t.setGlyph(this.getGlyph()),t.renderMaker(),t}},{key:"setGlyph",value:function(t){this.glyph_=t}},{key:"getFill",value:function(){return this.fill_}},{key:"getStroke",value:function(){return this.stroke_}},{key:"getGlyph",value:function(t){var e=this.glyph_;return t&&(e=(e=o.defs.glyphs[t])||{font:"none",char:t.charAt(0),theme:"none",name:"none",search:""}),e}},{key:"getGlyphName",value:function(){var t=this,e="";return Object.keys(o.defs.glyphs).forEach((function(r){o.defs.glyph[r]===t.glyph_&&(e=r)})),e}},{key:"getFontInfo",value:function(t){return o.defs.fonts[t.font]}},{key:"renderMaker",value:function(t){var e,r=0;this.stroke_&&(e=Object(Bn.b)(this.stroke_.getColor()),r=this.stroke_.getWidth());var n=this.getImage(1);n.height+=1,n.width+=1;var i={strokeStyle:e,strokeWidth:r,size:n.width},o=n.getContext("2d");o.clearRect(0,0,n.width,n.height),this.drawMarker_(i,o,0,0);var a=this.getAnchor();a[0]=n.width/2-this.offset_[0],a[1]=n.width/2-this.offset_[1]}},{key:"drawPath_",value:function(t,e){var r=e,n=2*this.radius_+t.strokeWidth,i=t.strokeWidth/2,o=t.size/2,a={fac:1,posX:t.size/2,posY:t.size/2};r.lineJoin="round",r.beginPath();var s=Math.PI;switch(this.form_){case"none":a.fac=1;break;case"circle":case"ban":r.arc(o,o,n/2,0,2*Math.PI,!0);break;case"poi":r.arc(o,o-.4*this.radius_,.6*this.radius_,.15*s,.85*s,!0),r.lineTo(o-.89*.05*n,(.95+.45*.05)*n+i),r.arc(o,.95*n+i,.05*n,.85*Math.PI,.15*Math.PI,!0),a={fac:.45,posX:o,posY:o-.35*this.radius_};break;case"bubble":r.arc(o,o-.2*this.radius_,.8*this.radius_,.4*s,.6*s,!0),r.lineTo(.5*n+i,n+i),a={fac:.7,posX:o,posY:o-.2*this.radius_};break;case"marker":r.arc(o,o-.2*this.radius_,.8*this.radius_,.25*s,.75*s,!0),r.lineTo(.5*n+i,n+i),a={fac:.7,posX:o,posY:o-.2*this.radius_};break;case"coma":r.moveTo(o+.8*this.radius_,o-.2*this.radius_),r.quadraticCurveTo(.95*n+i,.75*n+i,.5*n+i,n+i),r.arc(o,o-.2*this.radius_,.8*this.radius_,.45*s,0,!1),a={fac:.7,posX:o,posY:o-.2*this.radius_};break;default:var l;switch(this.form_){case"shield":l=[.05,0,.95,0,.95,.8,.5,1,.05,.8,.05,0],a.posY=.45*n+i;break;case"blazon":l=[.1,0,.9,0,.9,.8,.6,.8,.5,1,.4,.8,.1,.8,.1,0],a.fac=.8,a.posY=.4*n+i;break;case"bookmark":l=[.05,0,.95,0,.95,1,.5,.8,.05,1,.05,0],a.fac=.9,a.posY=.4*n+i;break;case"hexagon":l=[.05,.2,.5,0,.95,.2,.95,.8,.5,1,.05,.8,.05,.2],a.fac=.9,a.posY=.5*n+i;break;case"diamond":l=[.25,0,.75,0,1,.2,1,.4,.5,1,0,.4,0,.2,.25,0],a.fac=.75,a.posY=.35*n+i;break;case"triangle":l=[0,0,1,0,.5,1,0,0],a.fac=.6,a.posY=.3*n+i;break;case"sign":l=[.5,.05,1,.95,0,.95,.5,.05],a.fac=.7,a.posY=.65*n+i;break;case"lozenge":l=[.5,0,1,.5,.5,1,0,.5,.5,0],a.fac=.7;break;default:l=[0,0,1,0,1,1,0,1,0,0]}for(var u=0;u0&&void 0!==arguments[0]?arguments[0]:{};a_(this,r);var n=t;return t.anchor||(n.anchor=[]),t.offset||(n.offset=[]),e.call(this,{glyph:t.glyph,color:t.color,fontSize:t.fontSize,stroke:t.stroke,fill:t.fill,radius:t.radius,form:t.form,gradient:t.gradient,offsetX:t.offset[0],offsetY:t.offset[1],opacity:t.opacity,rotation:t.rotation,rotateWithView:t.rotateWithView})}return r}(i_);function f_(t){return(f_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function p_(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function d_(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};return p_(this,o),i.call(this,{anchor:t.anchor?t.anchor.slice():void 0,anchorOrigin:t.anchorOrigin,anchorXUnits:t.anchorXUnits,anchorYUnits:t.anchorYUnits,crossOrigin:t.crossOrigin||null,color:t.color&&t.color.slice?t.color.slice():t.color||void 0,src:t.src,offset:t.offset?t.offset.slice():void 0,offsetOrigin:t.offsetOrigin,size:t.size?t.size.slice():void 0,imgSize:t.imgSize,opacity:t.opacity,scale:t.scale,snapToPixel:t.snapToPixel,rotation:t.rotation,rotateWithView:t.rotateWithView})}return e=o,(r=[{key:"clone",value:function(){return new o({anchor:this.anchor_.slice(),anchorOrigin:this.anchorOrigin_,anchorXUnits:this.anchorXUnits_,anchorYUnits:this.anchorYUnits_,crossOrigin:this.crossOrigin_,color:this.color_&&this.color_.slice?this.color_.slice():this.color_||void 0,src:this.getSrc(),offset:this.offset_.slice(),offsetOrigin:this.offsetOrigin_,size:null!==this.size_?this.size_.slice():void 0,opacity:this.getOpacity(),scale:this.getScale(),rotation:this.getRotation(),rotateWithView:this.getRotateWithView()})}},{key:"size",set:function(t){this.size_=Array.isArray(t)?t:null}},{key:"anchor",set:function(t){this.anchor_=Array.isArray(t)?t:null}},{key:"origin",set:function(t){this.origin_=Array.isArray(t)?t:null}}])&&d_(e.prototype,r),n&&d_(e,n),o}(iy);function b_(t){return(b_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function x_(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function w_(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};return x_(this,o),i.call(this,{points:1/0,fill:t.fill,radius:t.radius,snapToPixel:t.snapToPixel,stroke:t.stroke,atlasManager:t.atlasManager})}return e=o,(r=[{key:"clone",value:function(){var t=new o({fill:this.getFill()?this.getFill().clone():void 0,stroke:this.getStroke()?this.getStroke().clone():void 0,radius:this.getRadius(),atlasManager:this.atlasManager_});return t.setOpacity(this.getOpacity()),t.setScale(this.getScale()),t}}])&&w_(e.prototype,r),n&&w_(e,n),o}(Yy);function T_(t){return(T_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function P_(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function R_(t,e){for(var r=0;rs.DEFAULT_WIDTH_POINT&&n.getImage().getStroke().setWidth(s.DEFAULT_WIDTH_POINT),n.getImage().render());var l=n.getImage().getImage(1);null!=l&&(e=l.toDataURL())}}return e}},{key:"updateFacadeOptions",value:function(t){var e=this;this.olStyleFn_=function(r){var o=r;o instanceof Wc||o instanceof lh||(o=e);var a,s,u=new am({zIndex:By.getValue(t.zindex,o,e.layer_),geometry:function(t){var e=null;if("MultiPoint"===t.getGeometry().getType())e=new Hc(t.getGeometry().getCoordinates());else{var r=wh.getCentroid(t.getGeometry());e=new aa(r)}return e}}),c=new am({zIndex:By.getValue(t.zindex,o,e.layer_),geometry:function(t){var e=null;if("MultiPoint"===t.getGeometry().getType())e=new Hc(t.getGeometry().getCoordinates());else{var r=wh.getCentroid(t.getGeometry());e=new aa(r)}return e}});if(o instanceof Wc){var h=function(t){var e=null;if("MultiPoint"===t.getGeometry().getType())e=new Hc(t.getGeometry().getCoordinates());else{var r=wh.getCentroid(t.getGeometry());e=new aa(r)}return e};u.setGeometry(h),c.setGeometry(h)}if(!_D(t.fill)){var f=By.getValue(t.fill.color,o,e.layer_),p=By.getValue(t.fill.opacity,o,e.layer_);p||0===p||(p=1),_D(f)||(a=new zg({color:l()(f).alpha(p).css()}))}if(!_D(t.stroke)){var d=By.getValue(t.stroke.color,o,e.layer_);if(!_D(d)){var g=t.stroke.linedashoffset;s=new Bg({color:d,width:By.getValue(t.stroke.width,o,e.layer_),lineDash:By.getValue(t.stroke.linedash,o,e.layer_),lineDashOffset:By.getValue(g,o,e.layer_),lineCap:By.getValue(t.stroke.linecap,o,e.layer_),lineJoin:By.getValue(t.stroke.linejoin,o,e.layer_),miterLimit:By.getValue(t.stroke.miterlimit,o,e.layer_)})}}if(!_D(t.label)){var y=By.getValue(t.label.text,o,e.layer_),m=By.getValue(t.label.align,o,e.layer_),_=By.getValue(t.label.baseline,o,e.layer_),v=new Yg({font:By.getValue(t.label.font,o,e.layer_),rotateWithView:By.getValue(t.label.rotate,o,e.layer_),scale:By.getValue(t.label.scale,o,e.layer_),offsetX:By.getValue(t.label.offset?t.label.offset[0]:void 0,o,e.layer_),offsetY:By.getValue(t.label.offset?t.label.offset[1]:void 0,o,e.layer_),fill:new zg({color:By.getValue(t.label.color||"#000000",o,e.layer_)}),textAlign:Object.values(i).includes(m)?m:"center",textBaseline:Object.values(n).includes(_)?_:"top",text:void 0===y?void 0:String(y),rotation:By.getValue(t.label.rotation,o,e.layer_)});if(!_D(t.label.stroke)){var b=t.label.stroke,x=b.miterlimit,w=b.linedashoffset;v.setStroke(new Bg({color:By.getValue(t.label.stroke.color,o,e.layer_),width:By.getValue(t.label.stroke.width,o,e.layer_),lineCap:By.getValue(t.label.stroke.linecap,o,e.layer_),lineJoin:By.getValue(t.label.stroke.linejoin,o,e.layer_),lineDash:By.getValue(t.label.stroke.linedash,o,e.layer_),lineDashOffset:By.getValue(w,o,e.layer_),miterLimit:By.getValue(x,o,e.layer_)}))}u.setText(v)}return u.setImage(new C_({fill:a,stroke:s,radius:By.getValue(t.radius,o,e.layer_),snapToPixel:By.getValue(t.snapToPixel,o,e.layer_)})),_D(t.icon)||(_D(t.icon.src)?_D(t.icon.form)||c.setImage(new h_({form:_D(By.getValue(t.icon.form,o,e.layer_))?"":By.getValue(t.icon.form,o,e.layer_).toLowerCase(),gradient:By.getValue(t.icon.gradient,o,e.layer_),glyph:By.getValue(t.icon.class,o,e.layer_),fontSize:By.getValue(t.icon.fontsize,o,e.layer_),radius:By.getValue(t.icon.radius,o,e.layer_),rotation:By.getValue(t.icon.rotation,o,e.layer_),rotateWithView:By.getValue(t.icon.rotate,o,e.layer_),offsetX:By.getValue(t.icon.offset?t.icon.offset[0]:void 0,o,e.layer_),offsetY:By.getValue(t.icon.offset?t.icon.offset[1]:void 0,o,e.layer_),fill:new zg({color:By.getValue(void 0!==t.icon.fill?t.icon.fill:"#FFFFFF",o,e.layer_)}),stroke:t.icon.color?new Bg({color:By.getValue(t.icon.color,o,e.layer_),width:1}):void 0,anchor:By.getValue(t.icon.anchor,o,e.layer_),anchorXUnits:By.getValue(t.icon.anchorxunits,o,e.layer_),anchorYUnits:By.getValue(t.icon.anchoryunits,o,e.layer_),src:By.getValue(t.icon.src,o,e.layer_),opacity:By.getValue(t.icon.opacity,o,e.layer_),scale:By.getValue(t.icon.scale,o,e.layer_),snapToPixel:By.getValue(t.icon.snaptopixel,o,e.layer_),offsetOrigin:By.getValue(t.icon.offsetorigin,o,e.layer_),offset:By.getValue(t.icon.offset,o,e.layer_),crossOrigin:By.getValue(t.icon.crossorigin,o,e.layer_),anchorOrigin:By.getValue(t.icon.anchororigin,o,e.layer_),size:By.getValue(t.icon.size,o,e.layer_)})):c.setImage(new v_({anchor:By.getValue(t.icon.anchor,o,e.layer_),anchorXUnits:By.getValue(t.icon.anchorxunits,o,e.layer_),anchorYUnits:By.getValue(t.icon.anchoryunits,o,e.layer_),src:By.getValue(t.icon.src,o,e.layer_),opacity:By.getValue(t.icon.opacity,o,e.layer_),scale:By.getValue(t.icon.scale,o,e.layer_),rotation:By.getValue(t.icon.rotation,o,e.layer_),rotateWithView:By.getValue(t.icon.rotate,o,e.layer_),snapToPixel:By.getValue(t.icon.snaptopixel,o,e.layer_),offsetOrigin:By.getValue(t.icon.offsetorigin,o,e.layer_),offset:By.getValue(t.icon.offset,o,e.layer_),crossOrigin:By.getValue(t.icon.crossorigin,o,e.layer_),anchorOrigin:By.getValue(t.icon.anchororigin,o,e.layer_),size:By.getValue(t.icon.size,o,e.layer_)}))),[u,c]}}},{key:"drawGeometryToCanvas",value:function(t){this.olStyleFn_()[1].getImage()instanceof i_?t.drawGeometry(new aa([10,10])):t.drawCircle(new dh([this.getCanvasSize()[0]/2,this.getCanvasSize()[1]/2],this.getRadius_()))}},{key:"updateCanvas",value:function(t){if(this.updateFacadeOptions(this.options_),!nG(this.options_)){var e=this.getCanvasSize(),r=xy(t.getContext("2d"),{size:e}),n=this.olStyleFn_()[0];_D(n.getText())||n.setText(null),!_D(this.olStyleFn_()[1])&&this.olStyleFn_()[1].getImage()instanceof i_&&(n=this.olStyleFn_()[1]);var i=n.getImage().getStroke();_D(i)||_D(i.getWidth())||i.setWidth(3),r.setStyle(n),this.drawGeometryToCanvas(r)}}},{key:"getCanvasSize",value:function(){var t,e=this.olStyleFn_()[1].getImage();if(e instanceof i_)t=[90,90];else{var r=this.getRadius_(e);t=[2*r+4,2*r+4]}return t}},{key:"getRadius_",value:function(t){return t instanceof iy?25:t instanceof i_?t.getRadius():this.olStyleFn_()[0].getImage().getRadius()}}])&&R_(e.prototype,r),o&&R_(e,o),s}(By);k_.DEFAULT_WIDTH_POINT=3;var j_=k_;function F_(t){return(F_="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function D_(t,e){for(var r=0;r M.style.Simple.deserialize(serializedParameters, 'M.style.Point'))"}}])&&D_(e.prototype,r),n&&D_(e,n),o}(Bm);V_.DEFAULT={radius:5},V_.DEFAULT_NULL={fill:{color:"rgba(255, 255, 255, 0.4)",opacity:.4},stroke:{color:"#3399CC",width:1.5},radius:5};var q_=V_,Y_=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),W_="renderOrder",X_=function(t){function e(e){var r=this,n=e||{},i=Object(ii.a)({},n);return delete i.style,delete i.renderBuffer,delete i.updateWhileAnimating,delete i.updateWhileInteracting,(r=t.call(this,i)||this).declutter_=void 0!==n.declutter&&n.declutter,r.renderBuffer_=void 0!==n.renderBuffer?n.renderBuffer:100,r.style_=null,r.styleFunction_=void 0,r.setStyle(n.style),r.updateWhileAnimating_=void 0!==n.updateWhileAnimating&&n.updateWhileAnimating,r.updateWhileInteracting_=void 0!==n.updateWhileInteracting&&n.updateWhileInteracting,r}return Y_(e,t),e.prototype.getDeclutter=function(){return this.declutter_},e.prototype.getFeatures=function(e){return t.prototype.getFeatures.call(this,e)},e.prototype.getRenderBuffer=function(){return this.renderBuffer_},e.prototype.getRenderOrder=function(){return this.get(W_)},e.prototype.getStyle=function(){return this.style_},e.prototype.getStyleFunction=function(){return this.styleFunction_},e.prototype.getUpdateWhileAnimating=function(){return this.updateWhileAnimating_},e.prototype.getUpdateWhileInteracting=function(){return this.updateWhileInteracting_},e.prototype.renderDeclutter=function(t){t.declutterTree||(t.declutterTree=new lg.a(9)),this.getRenderer().renderDeclutter(t)},e.prototype.setRenderOrder=function(t){this.set(W_,t)},e.prototype.setStyle=function(t){this.style_=void 0!==t?t:Zy,this.styleFunction_=null===t?void 0:function(t){var e;if("function"==typeof t)e=t;else{var r;Array.isArray(t)?r=t:(Object(Ui.a)("function"==typeof t.getZIndex,41),r=[t]),e=function(){return r}}return e}(this.style_),this.changed()},e}(Yn.a),H_={BEGIN_GEOMETRY:0,BEGIN_PATH:1,CIRCLE:2,CLOSE_PATH:3,CUSTOM:4,DRAW_CHARS:5,DRAW_IMAGE:6,END_GEOMETRY:7,FILL:8,MOVE_TO_LINE_TO:9,SET_FILL_STYLE:10,SET_STROKE_STYLE:11,STROKE:12},Z_=[H_.FILL],K_=[H_.STROKE],J_=[H_.BEGIN_PATH],$_=[H_.CLOSE_PATH],Q_=H_,tv=r(36),ev=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),rv=function(t){function e(e,r,n,i){var o=t.call(this)||this;return o.tolerance=e,o.maxExtent=r,o.pixelRatio=i,o.maxLineWidth=0,o.resolution=n,o.beginGeometryInstruction1_=null,o.beginGeometryInstruction2_=null,o.bufferedMaxExtent_=null,o.instructions=[],o.coordinates=[],o.tmpCoordinate_=[],o.hitDetectionInstructions=[],o.state={},o}return ev(e,t),e.prototype.applyPixelRatio=function(t){var e=this.pixelRatio;return 1==e?t:t.map((function(t){return t*e}))},e.prototype.appendFlatPointCoordinates=function(t,e){for(var r=this.getBufferedMaxExtent(),n=this.tmpCoordinate_,i=this.coordinates,o=i.length,a=0,s=t.length;ah&&(this.instructions.push([Q_.CUSTOM,h,o,t,r,$o]),this.hitDetectionInstructions.push([Q_.CUSTOM,h,o,t,n||r,$o]));break;case fo.a.POINT:i=t.getFlatCoordinates(),this.coordinates.push(i[0],i[1]),o=this.coordinates.length,this.instructions.push([Q_.CUSTOM,h,o,t,r]),this.hitDetectionInstructions.push([Q_.CUSTOM,h,o,t,n||r])}this.endGeometry(e)},e.prototype.beginGeometry=function(t,e){this.beginGeometryInstruction1_=[Q_.BEGIN_GEOMETRY,e,0,t],this.instructions.push(this.beginGeometryInstruction1_),this.beginGeometryInstruction2_=[Q_.BEGIN_GEOMETRY,e,0,t],this.hitDetectionInstructions.push(this.beginGeometryInstruction2_)},e.prototype.finish=function(){return{instructions:this.instructions,hitDetectionInstructions:this.hitDetectionInstructions,coordinates:this.coordinates}},e.prototype.reverseHitDetectionInstructions=function(){var t,e=this.hitDetectionInstructions;e.reverse();var r,n,i=e.length,o=-1;for(t=0;tthis.maxLineWidth&&(this.maxLineWidth=r.lineWidth,this.bufferedMaxExtent_=null)}else r.strokeStyle=void 0,r.lineCap=void 0,r.lineDash=null,r.lineDashOffset=void 0,r.lineJoin=void 0,r.lineWidth=void 0,r.miterLimit=void 0},e.prototype.createFill=function(t){var e=t.fillStyle,r=[Q_.SET_FILL_STYLE,e];return"string"!=typeof e&&r.push(!0),r},e.prototype.applyStroke=function(t){this.instructions.push(this.createStroke(t))},e.prototype.createStroke=function(t){return[Q_.SET_STROKE_STYLE,t.strokeStyle,t.lineWidth*this.pixelRatio,t.lineCap,t.lineJoin,t.miterLimit,this.applyPixelRatio(t.lineDash),t.lineDashOffset*this.pixelRatio]},e.prototype.updateFillStyle=function(t,e){var r=t.fillStyle;"string"==typeof r&&t.currentFillStyle==r||(void 0!==r&&this.instructions.push(e.call(this,t)),t.currentFillStyle=r)},e.prototype.updateStrokeStyle=function(t,e){var r=t.strokeStyle,n=t.lineCap,i=t.lineDash,o=t.lineDashOffset,a=t.lineJoin,s=t.lineWidth,l=t.miterLimit;(t.currentStrokeStyle!=r||t.currentLineCap!=n||i!=t.currentLineDash&&!Object(h.b)(t.currentLineDash,i)||t.currentLineDashOffset!=o||t.currentLineJoin!=a||t.currentLineWidth!=s||t.currentMiterLimit!=l)&&(void 0!==r&&e.call(this,t),t.currentStrokeStyle=r,t.currentLineCap=n,t.currentLineDash=i,t.currentLineDashOffset=o,t.currentLineJoin=a,t.currentLineWidth=s,t.currentMiterLimit=l)},e.prototype.endGeometry=function(t){this.beginGeometryInstruction1_[2]=this.instructions.length,this.beginGeometryInstruction1_=null,this.beginGeometryInstruction2_[2]=this.hitDetectionInstructions.length,this.beginGeometryInstruction2_=null;var e=[Q_.END_GEOMETRY,t];this.instructions.push(e),this.hitDetectionInstructions.push(e)},e.prototype.getBufferedMaxExtent=function(){if(!this.bufferedMaxExtent_&&(this.bufferedMaxExtent_=Object(mt.e)(this.maxExtent),this.maxLineWidth>0)){var t=this.resolution*(this.maxLineWidth+1)/2;Object(mt.d)(this.bufferedMaxExtent_,t,this.bufferedMaxExtent_)}return this.bufferedMaxExtent_},e}(oy),nv=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),iv=function(t){function e(e,r,n,i){var o=t.call(this,e,r,n,i)||this;return o.hitDetectionImage_=null,o.image_=null,o.imagePixelRatio_=void 0,o.anchorX_=void 0,o.anchorY_=void 0,o.height_=void 0,o.opacity_=void 0,o.originX_=void 0,o.originY_=void 0,o.rotateWithView_=void 0,o.rotation_=void 0,o.scale_=void 0,o.width_=void 0,o.declutterImageWithText_=void 0,o}return nv(e,t),e.prototype.drawPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var r=t.getFlatCoordinates(),n=t.getStride(),i=this.coordinates.length,o=this.appendFlatPointCoordinates(r,n);this.instructions.push([Q_.DRAW_IMAGE,i,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([Q_.DRAW_IMAGE,i,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.drawMultiPoint=function(t,e){if(this.image_){this.beginGeometry(t,e);var r=t.getFlatCoordinates(),n=t.getStride(),i=this.coordinates.length,o=this.appendFlatPointCoordinates(r,n);this.instructions.push([Q_.DRAW_IMAGE,i,o,this.image_,this.anchorX_*this.imagePixelRatio_,this.anchorY_*this.imagePixelRatio_,Math.ceil(this.height_*this.imagePixelRatio_),this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,[this.scale_[0]*this.pixelRatio/this.imagePixelRatio_,this.scale_[1]*this.pixelRatio/this.imagePixelRatio_],Math.ceil(this.width_*this.imagePixelRatio_),this.declutterImageWithText_]),this.hitDetectionInstructions.push([Q_.DRAW_IMAGE,i,o,this.hitDetectionImage_,this.anchorX_,this.anchorY_,this.height_,this.opacity_,this.originX_,this.originY_,this.rotateWithView_,this.rotation_,this.scale_,this.width_,this.declutterImageWithText_]),this.endGeometry(e)}},e.prototype.finish=function(){return this.reverseHitDetectionInstructions(),this.anchorX_=void 0,this.anchorY_=void 0,this.hitDetectionImage_=null,this.image_=null,this.imagePixelRatio_=void 0,this.height_=void 0,this.scale_=void 0,this.opacity_=void 0,this.originX_=void 0,this.originY_=void 0,this.rotateWithView_=void 0,this.rotation_=void 0,this.width_=void 0,t.prototype.finish.call(this)},e.prototype.setImageStyle=function(t,e){var r=t.getAnchor(),n=t.getSize(),i=t.getHitDetectionImage(),o=t.getImage(this.pixelRatio),a=t.getOrigin();this.imagePixelRatio_=t.getPixelRatio(this.pixelRatio),this.anchorX_=r[0],this.anchorY_=r[1],this.hitDetectionImage_=i,this.image_=o,this.height_=n[1],this.opacity_=t.getOpacity(),this.originX_=a[0]*this.imagePixelRatio_,this.originY_=a[1]*this.imagePixelRatio_,this.rotateWithView_=t.getRotateWithView(),this.rotation_=t.getRotation(),this.scale_=t.getScaleArray(),this.width_=n[0],this.declutterImageWithText_=e},e}(rv),ov=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),av=function(t){function e(e,r,n,i){return t.call(this,e,r,n,i)||this}return ov(e,t),e.prototype.drawFlatCoordinates_=function(t,e,r,n){var i=this.coordinates.length,o=this.appendFlatLineCoordinates(t,e,r,n,!1,!1),a=[Q_.MOVE_TO_LINE_TO,i,o];return this.instructions.push(a),this.hitDetectionInstructions.push(a),r},e.prototype.drawLineString=function(t,e){var r=this.state,n=r.strokeStyle,i=r.lineWidth;if(void 0!==n&&void 0!==i){this.updateStrokeStyle(r,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Q_.SET_STROKE_STYLE,r.strokeStyle,r.lineWidth,r.lineCap,r.lineJoin,r.miterLimit,ui,0],J_);var o=t.getFlatCoordinates(),a=t.getStride();this.drawFlatCoordinates_(o,0,o.length,a),this.hitDetectionInstructions.push(K_),this.endGeometry(e)}},e.prototype.drawMultiLineString=function(t,e){var r=this.state,n=r.strokeStyle,i=r.lineWidth;if(void 0!==n&&void 0!==i){this.updateStrokeStyle(r,this.applyStroke),this.beginGeometry(t,e),this.hitDetectionInstructions.push([Q_.SET_STROKE_STYLE,r.strokeStyle,r.lineWidth,r.lineCap,r.lineJoin,r.miterLimit,r.lineDash,r.lineDashOffset],J_);for(var o=t.getEnds(),a=t.getFlatCoordinates(),s=t.getStride(),l=0,u=0,c=o.length;ut&&(m>y&&(y=m,d=_,g=o),m=0,_=o-i)),a=s,c=f,h=p),l=v,u=b}return(m+=s)>y?[_,o]:[d,g]}var cv=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),hv={left:0,end:0,center:.5,right:1,start:1,top:0,middle:.5,hanging:.2,alphabetic:.8,ideographic:.8,bottom:1},fv={Circle:lv,Default:rv,Image:iv,LineString:av,Polygon:lv,Text:function(t){function e(e,r,n,i){var o=t.call(this,e,r,n,i)||this;return o.labels_=null,o.text_="",o.textOffsetX_=0,o.textOffsetY_=0,o.textRotateWithView_=void 0,o.textRotation_=0,o.textFillState_=null,o.fillStates={},o.textStrokeState_=null,o.strokeStates={},o.textState_={},o.textStates={},o.textKey_="",o.fillKey_="",o.strokeKey_="",o.declutterImageWithText_=void 0,o}return cv(e,t),e.prototype.finish=function(){var e=t.prototype.finish.call(this);return e.textStates=this.textStates,e.fillStates=this.fillStates,e.strokeStates=this.strokeStates,e},e.prototype.drawText=function(t,e){var r=this.textFillState_,n=this.textStrokeState_,i=this.textState_;if(""!==this.text_&&i&&(r||n)){var o=this.coordinates,a=o.length,s=t.getType(),l=null,u=t.getStride();if(i.placement!==qg||s!=fo.a.LINE_STRING&&s!=fo.a.MULTI_LINE_STRING&&s!=fo.a.POLYGON&&s!=fo.a.MULTI_POLYGON){var c=i.overflow?null:[];switch(s){case fo.a.POINT:case fo.a.MULTI_POINT:l=t.getFlatCoordinates();break;case fo.a.LINE_STRING:l=t.getFlatMidpoint();break;case fo.a.CIRCLE:l=t.getCenter();break;case fo.a.MULTI_LINE_STRING:l=t.getFlatMidpoints(),u=2;break;case fo.a.POLYGON:l=t.getFlatInteriorPoint(),i.overflow||c.push(l[2]/this.resolution),u=3;break;case fo.a.MULTI_POLYGON:var h=t.getFlatInteriorPoints();l=[];for(w=0,E=h.length;wT[2]}else S=b>I;var P,R=Math.PI,L=[],M=w+n===e;if(y=0,m=E,f=t[e=w],p=t[e+1],M){_(),P=Math.atan2(p-g,f-d),S&&(P+=P>0?-R:R);var N=(I+b)/2,A=(C+x)/2;return L[0]=[N,A,(O-o)/2,P,i],L}for(var k=0,j=i.length;k0?-R:R),void 0!==P){var D=F-P;if(D+=D>R?-2*R:D<-R?2*R:0,Math.abs(D)>a)return null}P=F;for(var G=k,U=0;k0&&t.push("\n",""),t.push(e,""),t}var Sv=function(){function t(t,e,r,n){this.overlaps=r,this.pixelRatio=e,this.resolution=t,this.alignFill_,this.instructions=n.instructions,this.coordinates=n.coordinates,this.coordinateCache_={},this.renderedTransform_=Object(Un.d)(),this.hitDetectionInstructions=n.hitDetectionInstructions,this.pixelCoordinates_=null,this.viewRotation_=0,this.fillStates=n.fillStates||{},this.strokeStates=n.strokeStates||{},this.textStates=n.textStates||{},this.widths_={},this.labels_={}}return t.prototype.createLabel=function(t,e,r,n){var i=t+e+r+n;if(this.labels_[i])return this.labels_[i];var o=n?this.strokeStates[n]:null,a=r?this.fillStates[r]:null,s=this.textStates[e],l=this.pixelRatio,u=[s.scale[0]*l,s.scale[1]*l],c=Array.isArray(t),h=Ev(c?t[0]:t,s.textAlign||fi),f=n&&o.lineWidth?o.lineWidth:0,p=c?t:t.split("\n").reduce(Ov,[]),d=function(t,e){for(var r=[],n=[],i=[],o=0,a=0,s=0,l=0,u=0,c=e.length;u<=c;u+=2){var h=e[u];if("\n"!==h&&u!==c){var f=e[u+1]||t.font,p=Oi(f,h);r.push(p),a+=p;var d=wi(f);n.push(d),l=Math.max(l,d)}else o=Math.max(o,a),i.push(a),a=0,s+=l}return{width:o,height:s,widths:r,heights:n,lineWidths:i}}(s,p),g=d.width,y=d.height,m=d.widths,_=d.heights,v=d.lineWidths,b=g+f,x=[],w=(b+2)*u[0],E=(y+f)*u[1],O={width:w<0?Math.floor(w):Math.ceil(w),height:E<0?Math.floor(E):Math.ceil(E),contextInstructions:x};(1==u[0]&&1==u[1]||x.push("scale",u),n)&&(x.push("strokeStyle",o.strokeStyle),x.push("lineWidth",f),x.push("lineCap",o.lineCap),x.push("lineJoin",o.lineJoin),x.push("miterLimit",o.miterLimit),(ni.h?OffscreenCanvasRenderingContext2D:CanvasRenderingContext2D).prototype.setLineDash&&(x.push("setLineDash",[o.lineDash]),x.push("lineDashOffset",o.lineDashOffset)));r&&x.push("fillStyle",a.fillStyle),x.push("textBaseline","middle"),x.push("textAlign","center");for(var S,I=.5-h,C=h*b+I*f,T=[],P=[],R=0,L=0,M=0,N=0,A=0,k=p.length;At?t-l:i,b=o+u>e?e-u:o,x=p[3]+v*h[0]+p[1],w=p[0]+b*h[1]+p[2],E=m-p[3],O=_-p[0];return(d||0!==c)&&(mv[0]=E,bv[0]=E,mv[1]=O,_v[1]=O,_v[0]=E+x,vv[0]=_v[0],vv[1]=O+w,bv[1]=vv[1]),0!==c?(y=Object(Un.b)(Object(Un.d)(),r,n,1,1,c,-r,-n),Object(Un.a)(y,mv),Object(Un.a)(y,_v),Object(Un.a)(y,vv),Object(Un.a)(y,bv),Object(mt.l)(Math.min(mv[0],_v[0],vv[0],bv[0]),Math.min(mv[1],_v[1],vv[1],bv[1]),Math.max(mv[0],_v[0],vv[0],bv[0]),Math.max(mv[1],_v[1],vv[1],bv[1]),yv)):Object(mt.l)(Math.min(E,E+x),Math.min(O,O+w),Math.max(E,E+x),Math.max(O,O+w),yv),f&&(m=Math.round(m),_=Math.round(_)),{drawImageX:m,drawImageY:_,drawImageW:v,drawImageH:b,originX:l,originY:u,declutterBox:{minX:yv[0],minY:yv[1],maxX:yv[2],maxY:yv[3],value:g},canvasTransform:y,scale:h}},t.prototype.replayImageOrLabel_=function(t,e,r,n,i,o,a){var s=!(!o&&!a),l=n.declutterBox,u=t.canvas,c=a?a[2]*n.scale[0]/2:0;return l.minX-c<=u.width/e&&l.maxX+c>=0&&l.minY-c<=u.height/e&&l.maxY+c>=0&&(s&&this.replayTextBackground_(t,mv,_v,vv,bv,o,a),Ii(t,n.canvasTransform,i,r,n.originX,n.originY,n.drawImageW,n.drawImageH,n.drawImageX,n.drawImageY,n.scale)),!0},t.prototype.fill_=function(t){if(this.alignFill_){var e=Object(Un.a)(this.renderedTransform_,[0,0]),r=512*this.pixelRatio;t.save(),t.translate(e[0]%r,e[1]%r),t.rotate(this.viewRotation_)}t.fill(),this.alignFill_&&t.restore()},t.prototype.setStrokeStyle_=function(t,e){t.strokeStyle=e[1],t.lineWidth=e[2],t.lineCap=e[3],t.lineJoin=e[4],t.miterLimit=e[5],t.setLineDash&&(t.lineDashOffset=e[7],t.setLineDash(e[6]))},t.prototype.drawLabelWithPointPlacement_=function(t,e,r,n){var i=this.textStates[e],o=this.createLabel(t,e,n,r),a=this.strokeStates[r],s=this.pixelRatio,l=Ev(Array.isArray(t)?t[0]:t,i.textAlign||fi),u=hv[i.textBaseline||pi],c=a&&a.lineWidth?a.lineWidth:0;return{label:o,anchorX:l*(o.width/s-2*i.scale[0])+2*(.5-l)*c,anchorY:u*o.height/s+2*(.5-u)*c}},t.prototype.execute_=function(t,e,r,n,i,o,a,s){var l;this.pixelCoordinates_&&Object(h.b)(r,this.renderedTransform_)?l=this.pixelCoordinates_:(this.pixelCoordinates_||(this.pixelCoordinates_=[]),l=Ro(this.coordinates,0,this.coordinates.length,2,r,this.pixelCoordinates_),Object(Un.k)(this.renderedTransform_,r));for(var u,c,f,p,d,g,y,m,_,v,b,x,w,E,O,S,I=0,C=n.length,T=0,P=0,R=0,L=null,M=null,N=this.coordinateCache_,A=this.viewRotation_,k=Math.round(1e12*Math.atan2(-r[1],r[0]))/1e12,j={context:t,pixelRatio:this.pixelRatio,resolution:this.resolution,rotation:A},F=this.instructions!=n||this.overlaps?0:200;IF&&(this.fill_(t),P=0),R>F&&(t.stroke(),R=0),P||R||(t.beginPath(),p=NaN,d=NaN),++I;break;case Q_.CIRCLE:var G=l[T=D[1]],U=l[T+1],B=l[T+2]-G,z=l[T+3]-U,V=Math.sqrt(B*B+z*z);t.moveTo(G+V,U),t.arc(G,U,V,0,2*Math.PI,!0),++I;break;case Q_.CLOSE_PATH:t.closePath(),++I;break;case Q_.CUSTOM:T=D[1],u=D[2];var q=D[3],Y=D[4],W=6==D.length?D[5]:void 0;j.geometry=q,j.feature=w,I in N||(N[I]=[]);var X=N[I];W?W(l,T,u,2,X):(X[0]=l[T],X[1]=l[T+1],X.length=2),Y(X,j),++I;break;case Q_.DRAW_IMAGE:T=D[1],u=D[2],m=D[3],c=D[4],f=D[5];var H=D[6],Z=D[7],K=D[8],J=D[9],$=D[10],Q=D[11],tt=D[12],et=D[13],rt=D[14];if(!m&&D.length>=19){_=D[18],v=D[19],b=D[20],x=D[21];var nt=this.drawLabelWithPointPlacement_(_,v,b,x);m=nt.label,D[3]=m;var it=D[22];c=(nt.anchorX-it)*this.pixelRatio,D[4]=c;var ot=D[23];f=(nt.anchorY-ot)*this.pixelRatio,D[5]=f,H=m.height,D[6]=H,et=m.width,D[13]=et}var at=void 0;D.length>24&&(at=D[24]);var st=void 0,lt=void 0,ut=void 0;D.length>16?(st=D[15],lt=D[16],ut=D[17]):(st=di,lt=!1,ut=!1),$&&k?Q+=A:$||k||(Q-=A);for(var ct=0;Tr)break;var s=n[a];s||(s=[],n[a]=s),s.push(4*((t+i)*e+(t+o))+3),i>0&&s.push(4*((t-i)*e+(t+o))+3),o>0&&(s.push(4*((t+i)*e+(t-o))+3),i>0&&s.push(4*((t-i)*e+(t-o))+3))}for(var l=[],u=(i=0,n.length);i0){if(!o||f!==hy&&f!==dy||-1!==o.indexOf(t)){var u=(p[s]-3)/4,h=n-u%a,d=n-(u/a|0),g=i(t,e,h*h+d*d);if(g)return g}c.clearRect(0,0,a,a);break}}var g,y,m,_,v,b=Object.keys(this.executorsByZIndex_).map(Number);for(b.sort(h.i),g=b.length-1;g>=0;--g){var x=b[g].toString();for(m=this.executorsByZIndex_[x],y=Iv.length-1;y>=0;--y)if(void 0!==(_=m[f=Iv[y]])&&(v=_.executeHitDetection(c,s,r,d,u)))return v}},t.prototype.getClipCoords=function(t){var e=this.maxExtent_;if(!e)return null;var r=e[0],n=e[1],i=e[2],o=e[3],a=[r,n,r,o,i,o,i,n];return Ro(a,0,8,2,t,a),a},t.prototype.isEmpty=function(){return Object(ii.d)(this.executorsByZIndex_)},t.prototype.execute=function(t,e,r,n,i,o,a){var s=Object.keys(this.executorsByZIndex_).map(Number);s.sort(h.i),this.maxExtent_&&(t.save(),this.clip(t,r));var l,u,c,f,p,d,g=o||Iv;for(a&&s.reverse(),l=0,u=s.length;lp[2];)m=g*++y,u.push(this.getRenderTransform(n,i,o,Rv,c,h,m).slice()),d-=g}this.hitDetectionImageData_=Lv(r,u,this.renderedFeatures_,l.getStyleFunction(),s,i,o)}e(Mv(t,this.renderedFeatures_,this.hitDetectionImageData_))}.bind(this))},e.prototype.forEachFeatureAtCoordinate=function(t,e,r,n,i){var o=this;if(this.replayGroup_){var a,s=e.viewState.resolution,l=e.viewState.rotation,u=this.getLayer(),c={},h=function(t,e,r){var o=Object(Gn.c)(t),a=c[o];if(a){if(!0!==a&&rx[0]&&O[2]>x[2]&&b.push([O[0]-w,O[1],O[2]-w,O[3]])}if(!this.dirty_&&this.renderedResolution_==f&&this.renderedRevision_==d&&this.renderedRenderOrder_==y&&Object(mt.h)(this.wrappedRenderedExtent_,_))return Object(h.b)(this.renderedExtent_,v)||(this.hitDetectionImageData_=null,this.renderedExtent_=v),this.renderedCenter_=m,this.replayGroupChanged=!1,!0;this.replayGroup_=null,this.dirty_=!1;var S,I=new pv(_y(f,p),_,f,p);this.getLayer().getDeclutter()&&(S=new pv(_y(f,p),_,f,p));var C,T=Object(u.s)();if(T){for(var P=0,R=b.length;P0&&void 0!==arguments[0]?arguments[0]:{};return Dv(this,o),(t=i.call(this,e)).styleCluster_=e.style,t.oldCluster_=new Tg,t.clusters_=[],t.animation_={start:!1},t.set("animationDuration","number"==typeof e.animationDuration?e.animationDuration:700),t.set("animationMethod",e.animationMethod||So.easeOut),t.getSource().on("change",t.saveCluster_.bind(qv(t))),t.on("prerender",t.animate.bind(qv(t))),t.on("postrender",t.postanimate.bind(qv(t))),t.setStyle(e.style),t}return e=o,n=[{key:"getClusterForFeature",value:function(t,e){return e.find((function(e){var r,n=e.get("features");return _D(n)||(r=n.find((function(e){return e===t}))),r}))}}],(r=[{key:"saveCluster_",value:function(){if(this.oldCluster_.clear(),this.get("animationDuration")){var t=this.getSource().getFeatures();t.length&&t[0].get("features")&&(this.oldCluster_.addFeatures(this.clusters_),this.clusters_=t.slice(0),this.sourceChanged=!0)}}},{key:"animate",value:function(t){var e=this,r=t,n=this.get("animationDuration");if(n){if(this.animation_.resolution!==r.frameState.viewState.resolution&&this.sourceChanged){var i=r.frameState.viewState.resolution,o=r.frameState.extent;this.animation_.reverse=this.animation_.resolution>=i,this.prepareAnimation_(o,r.frameState.viewState.resolution),r.frameState.time=this.animation_.start}var a=this.animation_.clustersFrom.length;if(a>0&&a<=1e3&&this.animation_.start){var s=wy(r),l=(r.frameState.time-this.animation_.start)/n;l>1&&(this.animation_.start=!1,l=1),l=this.get("animationMethod")(l),r.context.save(),r.context.globalAlpha=this.getOpacity(),this.animation_.clustersFrom.forEach((function(t,n){var i=t.getGeometry().getCoordinates(),o=e.animation_.clustersTo[n].getGeometry().getCoordinates();e.animation_.reverse?(i[0]=o[0]+l*(i[0]-o[0]),i[1]=o[1]+l*(i[1]-o[1])):(i[0]+=l*(o[0]-i[0]),i[1]+=l*(o[1]-i[1]));var a=e.getStyle()(t,r.frameState.viewState.resolution),u=new aa(i);_D(a)||a.forEach((function(t){var e=t.getImage();_D(e)||(null==e.getOrigin()&&(e.origin_=[]),null==e.getAnchor()&&(e.normalizedAnchor_=[]),null==e.getSize()&&(e.size_=[])),s.setStyle(t),s.drawGeometry(u)}))})),r.context.restore(),r.frameState.animate=!0,r.context.save(),r.context.beginPath(),r.context.rect(0,0,0,0),r.context.clip(),this.clip_=!0}else this.animation_.clustersFrom.length=0,this.animation_.clustersTo.length=0,this.animation_.start=!1}}},{key:"prepareAnimation_",value:function(t,e){var r=this;this.animation_.clustersFrom=[],this.animation_.clustersTo=[];var n=Object(mt.d)(t,100*e),i=this.oldCluster_.getFeaturesInExtent(n),a=this.getSource().getFeaturesInExtent(n),s=this.animation_.reverse?a:i,l=this.animation_.reverse?i:a;s.forEach((function(t){var e=t.get("features");if(!_D(e)){var n=o.getClusterForFeature(e[0],l);_D(n)||!1===n||(r.animation_.clustersFrom.push(t),r.animation_.clustersTo.push(n))}})),this.animation_.resolution=e,this.sourceChanged=!1,this.animation_.start=(new Date).getTime()}},{key:"postanimate",value:function(t){this.clip_&&(t.context.restore(),this.clip_=!1)}},{key:"setStyle",value:function(t){Uv(Yv(o.prototype),"setStyle",this).call(this,this.styleCluster_)}}])&&Gv(e.prototype,r),n&&Gv(e,n),o}(jv),Xv=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Hv="select",Zv=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.selected=r,o.deselected=n,o.mapBrowserEvent=i,o}return Xv(e,t),e}(Ni.a),Kv={};var Jv=function(t){function e(e){var r=t.call(this)||this;r.on,r.once,r.un;var n,i,o=e||{};if(r.boundAddFeature_=r.addFeature_.bind(r),r.boundRemoveFeature_=r.removeFeature_.bind(r),r.condition_=o.condition?o.condition:hs,r.addCondition_=o.addCondition?o.addCondition:cs,r.removeCondition_=o.removeCondition?o.removeCondition:cs,r.toggleCondition_=o.toggleCondition?o.toggleCondition:ps,r.multi_=!!o.multi&&o.multi,r.filter_=o.filter?o.filter:Dn.b,r.hitTolerance_=o.hitTolerance?o.hitTolerance:0,r.style_=void 0!==o.style?o.style:(n=Ky(),Object(h.c)(n[fo.a.POLYGON],n[fo.a.LINE_STRING]),Object(h.c)(n[fo.a.GEOMETRY_COLLECTION],n[fo.a.LINE_STRING]),function(t){return t.getGeometry()?n[t.getGeometry().getType()]:null}),r.features_=o.features||new Fi,o.layers)if("function"==typeof o.layers)i=o.layers;else{var a=o.layers;i=function(t){return Object(h.f)(a,t)}}else i=Dn.b;return r.layerFilter_=i,r.featureLayerAssociation_={},r}return Xv(e,t),e.prototype.addFeatureLayerAssociation_=function(t,e){this.featureLayerAssociation_[Object(Gn.c)(t)]=e},e.prototype.getFeatures=function(){return this.features_},e.prototype.getHitTolerance=function(){return this.hitTolerance_},e.prototype.getLayer=function(t){return this.featureLayerAssociation_[Object(Gn.c)(t)]},e.prototype.setHitTolerance=function(t){this.hitTolerance_=t},e.prototype.setMap=function(e){this.getMap()&&this.style_&&this.features_.forEach(this.restorePreviousStyle_.bind(this)),t.prototype.setMap.call(this,e),e?(this.features_.addEventListener(Li,this.boundAddFeature_),this.features_.addEventListener(Mi,this.boundRemoveFeature_),this.style_&&this.features_.forEach(this.applySelectedStyle_.bind(this))):(this.features_.removeEventListener(Li,this.boundAddFeature_),this.features_.removeEventListener(Mi,this.boundRemoveFeature_))},e.prototype.addFeature_=function(t){var e=t.element;if(this.style_&&this.applySelectedStyle_(e),!this.getLayer(e)){var r=this.getMap().getAllLayers().find((function(t){if(t instanceof jv&&t.getSource()&&t.getSource().hasFeature(e))return t}));r&&this.addFeatureLayerAssociation_(e,r)}},e.prototype.removeFeature_=function(t){var e=t.element;this.style_&&this.restorePreviousStyle_(e)},e.prototype.getStyle=function(){return this.style_},e.prototype.applySelectedStyle_=function(t){var e=Object(Gn.c)(t);e in Kv||(Kv[e]=t.getStyle()),t.setStyle(this.style_)},e.prototype.restorePreviousStyle_=function(t){for(var r=this.getMap().getInteractions().getArray(),n=r.length-1;n>=0;--n){var i=r[n];if(i!==this&&i instanceof e&&i.getStyle()&&-1!==i.getFeatures().getArray().lastIndexOf(t))return void t.setStyle(i.getStyle())}var o=Object(Gn.c)(t);t.setStyle(Kv[o]),delete Kv[o]},e.prototype.removeFeatureLayerAssociation_=function(t){delete this.featureLayerAssociation_[Object(Gn.c)(t)]},e.prototype.handleEvent=function(t){if(!this.condition_(t))return!0;var e=this.addCondition_(t),r=this.removeCondition_(t),n=this.toggleCondition_(t),i=!e&&!r&&!n,o=t.map,a=this.getFeatures(),s=[],l=[];if(i){Object(ii.b)(this.featureLayerAssociation_),o.forEachFeatureAtPixel(t.pixel,function(t,e){if(this.filter_(t,e))return this.addFeatureLayerAssociation_(t,e),l.push(t),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var u=a.getLength()-1;u>=0;--u){var c=a.item(u),f=l.indexOf(c);f>-1?l.splice(f,1):(a.remove(c),s.push(c))}0!==l.length&&a.extend(l)}else{o.forEachFeatureAtPixel(t.pixel,function(t,i){if(this.filter_(t,i))return!e&&!n||Object(h.f)(a.getArray(),t)?(r||n)&&Object(h.f)(a.getArray(),t)&&(s.push(t),this.removeFeatureLayerAssociation_(t)):(this.addFeatureLayerAssociation_(t,i),l.push(t)),!this.multi_}.bind(this),{layerFilter:this.layerFilter_,hitTolerance:this.hitTolerance_});for(var p=s.length-1;p>=0;--p)a.remove(s[p]);a.extend(l)}return(l.length>0||s.length>0)&&this.dispatchEvent(new Zv(Hv,l,s,t)),!0},e}(Ja);function $v(t){return($v="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Qv(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function tb(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};Qv(this,o);var r=e,n=new jv({source:new Tg({features:new Fi,useSpatialIndex:!0}),name:"Cluster overlay",updateWhileAnimating:!0,updateWhileInteracting:!0,displayInLayerSwitcher:!1,style:r.featureStyle});return e.layers.push(n),r.filter=function(t,e){return!(!e&&t.get("selectclusterlink"))},(t=i.call(this,r)).map=r.map,t.pointRadius=r.pointRadius||12,t.circleMaxObjects=r.circleMaxObjects||10,t.maxObjects=r.maxObjects||60,t.spiral=!1!==r.spiral,t.animate=r.animate,t.animationDuration=r.animationDuration||500,t.selectCluster_=!1!==r.selectCluster,t.maxFeaturesToSelect=r.maxFeaturesToSelect,t.facadeLayer_=r.fLayer,t.style_=r.style,t.filter_=r.filter,t.overlayLayer_=n,t.originalHandleEvent=t.handleEvent,t.on("select",t.selectCluster.bind(ib(t)),ib(t)),t}return e=o,(r=[{key:"setMap",value:function(t){var e=this;this.getMap()&&(this.getMap().getView()&&this.getMap().getView().un("change:resolution",this.clear.bind(this)),this.getMap().removeLayer(this.overlayLayer_)),Jv.prototype.setMap.call(this,t),this.overlayLayer_.setMap(t),t&&t.getView()&&t.getView().on("change:resolution",this.clear.bind(this)),this.handleEvent=function(t){return e.originalHandleEvent.apply(e,[t]),!0}}},{key:"clear",value:function(){this.getFeatures().clear(),this.overlayLayer_.getSource().clear()}},{key:"getLayer",value:function(){return this.overlayLayer_}},{key:"refreshViewEvents",value:function(){this.getMap()&&this.getMap().getView()&&this.getMap().getView().on("change:resolution",this.clear.bind(this))}},{key:"selectCluster",value:function(t){if(t.selected.length){var e=t.selected[0];if(!e.get("selectclusterfeature")){var r=e.get("features");if(r&&1!==r.length)if(r&&!(r.length>this.maxFeaturesToSelect)||this.facadeLayer_.getImpl().getNumZoomLevels()-this.map.getZoom()==1){this.selectCluster_||this.getFeatures().clear();var n=e.getGeometry().getCoordinates(),i=this.getMap().getView().getResolution(),o=i*this.pointRadius*(.5+r.length/4);!this.spiral||r.length<=this.circleMaxObjects?(this.overlayLayer_.getSource().refresh(),this.drawFeaturesAndLinsInCircle_(r,i,o,n)):(this.overlayLayer_.getSource().refresh(),this.drawFeaturesAndLinsInSpiral_(r,i,n)),this.animate&&this.animateCluster_(n)}else{var a=wh.getFeaturesExtent(r,this.map.getProjection().code);this.map.setBbox(a)}}}else this.clear()}},{key:"drawFeaturesAndLinsInCircle_",value:function(t,e,r,n){for(var i=Math.min(t.length,this.circleMaxObjects),o=0;o1)return Object(ag.b)(r.listenerKey_),r.overlayLayer_.setVisible(!0),void r.overlayLayer_.changed();e.frameState.animate=!0}}),this)}}}])&&tb(e.prototype,r),n&&tb(e,n),o}(Jv),sb=function(t,e,r){return(t[0]-r[0])*(e[1]-r[1])-(t[1]-r[1])*(e[0]-r[0])<=0},lb=function(t){t.sort((function(t,e){return t[0]===e[0]?t[1]-e[1]:t[0]-e[0]}));for(var e=[],r=0;r=2&&sb(e[e.length-2],e[e.length-1],t[r]);)e.pop();e.push(t[r])}for(var n=[],i=t.length-1;i>=0;i-=1){for(;n.length>=2&&sb(n[n.length-2],n[n.length-1],t[i]);)n.pop();n.push(t[i])}return n.pop(),e.pop(),e.concat(n)};function ub(t){return(ub="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function cb(t){return function(t){if(Array.isArray(t))return hb(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return hb(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return hb(t,e)}(t)||function(){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 hb(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0?this.clusterize_(r):this.layer_.on(Xl,this.clusterize_.bind(this),this)}},{key:"clusterize_",value:function(t){var e=t.map((function(t){return t.getImpl().getOLFeature()}));this.clusterLayer_=new Wv({name:"Cluster",source:new Rg({distance:this.options_.distance,geometryFunction:function(t){return new aa(Object(mt.x)(t.getGeometry().getExtent()))},source:new Tg({features:e})}),animationDuration:this.optionsVendor_.animationDuration,style:this.clusterStyleFn_.bind(this),animationMethod:So[this.optionsVendor_.animationMethod]}),!1===this.options_.animated&&this.clusterLayer_.set("animationDuration",void 0),this.clusterLayer_.setZIndex(99999);var r=this.layer_.getImpl().getOLLayer();r instanceof Wv||(this.oldOLLayer_=r),this.clusterLayer_.setMaxResolution(this.oldOLLayer_.getMaxResolution()),this.clusterLayer_.setMinResolution(this.oldOLLayer_.getMinResolution()),this.layer_.getImpl().setOLLayer(this.clusterLayer_),_D(this.options_.ranges)&&(this.options_.ranges=this.getDefaultRanges_()),!1!==this.options_.hoverInteraction&&this.addCoverInteraction_(),!1!==this.options_.selectInteraction&&this.addSelectInteraction_()}},{key:"setRanges",value:function(t){_D(t)?this.options_.ranges=this.getDefaultRanges_():this.options_.ranges=t}},{key:"updateLastRange_",value:function(){var t=HD({},this.options_);if(!_D(this.options_)&&!_D(this.options_.ranges)){var e=t.ranges;if(e.length>0){var r=(e=e.sort((function(t,e){return t.min-e.min}))).pop();if(_D(r.max)){var n=this.layer_.getFeatures().length;r.max=n}t.ranges.push(r)}}return t}},{key:"setAnimated",value:function(t,e,r){return r.getOptions().animated=t,!1===t?this.clusterLayer_.set("animationDuration",void 0):this.clusterLayer_.set("animationDuration",this.optionsVendor_.animationDuration),this}},{key:"addSelectInteraction",value:function(){this.addSelectInteraction_()}},{key:"addSelectInteraction_",value:function(){var t=this,e=this.layer_.getImpl().getMap();this.selectClusterInteraction_=new ab({fLayer:this.layer_,map:e,maxFeaturesToSelect:this.options_.maxFeaturesToSelect,pointRadius:this.optionsVendor_.distanceSelectFeatures,animate:!0,layers:[this.clusterLayer_]}),this.selectClusterInteraction_.on("select",this.selectClusterFeature_.bind(this),this),e.getMapImpl().addInteraction(this.selectClusterInteraction_),e.getMapImpl().on("change:view",(function(e){return t.selectClusterInteraction_.refreshViewEvents(e)}))}},{key:"removeSelectInteraction",value:function(){this.removeSelectInteraction_()}},{key:"removeSelectInteraction_",value:function(){this.layer_.getImpl().getMap().getMapImpl().removeInteraction(this.selectClusterInteraction_)}},{key:"hoverFeatureFn_",value:function(t,e){if(!_D(t)){var r=[];t.forEach((function(t){t instanceof EG?r=r.concat(t.getAttribute("features")):r.push(t)}));var n=r.map((function(t){return t.getImpl().getOLFeature().getGeometry().getCoordinates()})),i=lb(n);if(i.length>2){var o=new Wc(new Oa([i])),a=cG.olFeature2Facade(o);_D(this.convexHullLayer_)?(this.convexHullLayer_=new Dw({name:"cluster_cover_".concat(this.layer_.name),extract:!1},{displayInLayerSwitcher:!1,style:new Km(this.optionsVendor_.convexHullStyle)}),this.convexHullLayer_.addFeatures(a),this.layer_.getImpl().getMap().addLayers(this.convexHullLayer_),this.layer_.getImpl().getMap().getMapImpl().getView().on("change:resolution",this.clearConvexHull.bind(this),this),this.convexHullLayer_.setStyle(new Km(this.optionsVendor_.convexHullStyle)),this.convexHullLayer_.setZIndex(99990)):(this.convexHullLayer_.removeFeatures(this.convexHullLayer_.getFeatures()),this.convexHullLayer_.addFeatures(a))}}}},{key:"leaveFeatureFn_",value:function(t,e){_D(this.convexHullLayer_)||this.convexHullLayer_.removeFeatures(this.convexHullLayer_.getFeatures())}},{key:"addCoverInteraction_",value:function(){this.hoverKey_=this.layer_.on(Yl,this.hoverFeatureFn_.bind(this)),this.leaveKey_=this.layer_.on(Wl,this.leaveFeatureFn_.bind(this))}},{key:"removeCoverInteraction_",value:function(){this.layer_.unByKey(Yl,this.hoverKey_),this.layer_.unByKey(Wl,this.leaveKey_)}},{key:"clusterStyleFn_",value:function(t,e,r){var n,i=t.get("features");if(!i)return new am;var o=i.length,a=this.options_.ranges.find((function(t){return t.min<=o&&t.max>=o}));if(_D(a)){if(1===o){var s=i[0].getStyle();s||(s=this.oldOLLayer_.getStyle()),(n=s(i[0],e))[0].setGeometry(i[0].getGeometry())}}else{var l=a.style.clone();if(r)l.set("fill.opacity",.33);else if(this.options_.displayAmount){l.set("label",this.options_.label);var u=l.get("label.color");if(_D(u)){var c=l.get("fill.color");u=_D(c)?"#000":XD(c),l.set("label.color",u)}}n=l.getImpl().olStyleFn(t,e)}return n}},{key:"getDefaultRanges_",value:function(){var t=this.layer_.getFeatures().length,e=Math.floor(t/3),r=[{min:2,max:e=Math.max(e,3),style:new q_(jb.RANGE_1_DEFAULT)},{min:e,max:2*e,style:new q_(jb.RANGE_2_DEFAULT)},{min:2*e,max:t+1,style:new q_(jb.RANGE_3_DEFAULT)}];return this.options_.ranges=r,r}},{key:"selectClusterFeature_",value:function(t){this.clearConvexHull()}},{key:"unapply",value:function(){_D(this.clusterLayer_)?_D(this.layer_)||this.layer_.un(Xl,this.clusterize_.bind(this),this):(this.layer_.getImpl().setOLLayer(this.oldOLLayer_),this.oldOLLayer_.setMaxResolution(this.clusterLayer_.getMaxResolution()),this.oldOLLayer_.setMinResolution(this.clusterLayer_.getMinResolution()),this.removeCoverInteraction_(),this.removeSelectInteraction_(),this.clearConvexHull(),this.deactivateChangeResolutionEvent(),this.layer_.redraw(),this.deactivateChangeEvent())}},{key:"clearConvexHull",value:function(){null!==this.convexHullLayer_&&(this.layer_.getImpl().getMap().removeLayers(this.convexHullLayer_),this.convexHullLayer_=null)}},{key:"updateCanvas",value:function(){}},{key:"activateChangeEvent",value:function(){if(null!==this.clusterLayer_){var t=this.clusterLayer_.getSource(),e=Rg.prototype.refresh;t.getSource().on("change",e)}}},{key:"deactivateChangeEvent",value:function(){if(null!==this.clusterLayer_){var t=this.clusterLayer_.getSource(),e=Rg.prototype.refresh;Object(ag.b)({bindTo:void 0,callOnce:!1,listener:e,target:t.getSource(),type:"change"})}}},{key:"deactivateChangeResolutionEvent",value:function(){if(!_D(this.layer_)&&!_D(this.layer_.getImpl())){var t=this.layer_.getImpl().getMap();if(!_D(t)&&!_D(t.getMapImpl())){var e=t.getMapImpl().getView();Object(ag.b)({type:"change:resolution",bindTo:void 0,listener:this.clearConvexHull,target:e,callOnce:!1})}}}},{key:"deactivateTemporarilyChangeEvent",value:function(t,e){this.deactivateChangeEvent(),vD(t)&&(null==e?t():t.apply(void 0,cb(e)))}},{key:"selectClusterInteraction",get:function(){return this.selectClusterInteraction_}},{key:"oldOLLayer",get:function(){return this.oldOLLayer_}}])&&fb(e.prototype,r),n&&fb(e,n),o}(Ny);function _b(t){return(_b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function vb(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Tb(this,o);var n=new mb(e,r);return t=i.call(this,e,n),HD(e,o.DEFAULT),HD(r,o.DEFAULT_VENDOR),t.optsVendor_=r,t.oldStyle_=null,t}return e=o,n=[{key:"deserialize",value:function(t){var e=Ib(t,3),r=e[0],n=e[1],i=e[2],o=r;o.ranges.forEach((function(t){t.style=Em.deserialize(t.style)})),o=QD(r);var a=QD(n),s=new Function(["options","optsVendor"],"return new M.style.Cluster(options, optsVendor)")(o,a),l=i.map((function(t){return Em.deserialize(t)}));return s.add(l),s}}],(r=[{key:"apply",value:function(t){Rb(Ab(o.prototype),"apply",this).call(this,t);var e=t.getStyle();this.oldStyle_=e instanceof o?e.getOldStyle():e}},{key:"unapplySoft",value:function(t){this.getImpl().unapply()}},{key:"add",value:function(t){return _D(this.layer_)||this.unapplySoft(this.layer_),Rb(Ab(o.prototype),"add",this).call(this,t)}},{key:"applyInternal",value:function(t){this.layer_=t,this.getImpl().applyToLayer(t),this.updateCanvas()}},{key:"getOldStyle",value:function(){return this.oldStyle_}},{key:"getRanges",value:function(){return this.options_.ranges}},{key:"getOptions",value:function(){return this.options_}},{key:"setRanges",value:function(t){return this.getImpl().ranges=t,this.unapply(this.layer_),this.layer_.style=this,this}},{key:"getRange",value:function(t,e){return this.options_.ranges.find((function(r){return r.min===t&&r.max===e}))}},{key:"updateRange",value:function(t,e,r){return mb.updateRangeImpl(t,e,r,this.layer_,this),this.unapply(this.layer_),this.layer_.style=this,this}},{key:"setAnimated",value:function(t){return this.getImpl().setAnimated(t,this.layer_,this)}},{key:"isAnimated",value:function(){return this.options_.animated}},{key:"toImage",value:function(){return this.oldStyle_ instanceof Em?this.oldStyle_.toImage():Rb(Ab(o.prototype),"toImage",this).call(this)}},{key:"refresh",value:function(){if(!_D(this.layer_)){var t=this.layer_;this.unapply(this.layer_),this.apply(t),this.updateCanvas()}}},{key:"addSelectInteraction",value:function(){this.getImpl().addSelectInteraction()}},{key:"removeSelectInteraction",value:function(){this.getImpl().removeSelectInteraction()}},{key:"toJSON",value:function(){var t=HD({},this.getOptions());t.ranges=this.getRanges().map((function(t){var e=HD({},t);return e.style=t.style.serialize(),e})),t=$D(t);var e=HD({},this.optsVendor_);return{parameters:[t,e=$D(e),this.getStyles().map((function(t){return t.serialize()}))],deserializedMethod:"M.style.Cluster.deserialize"}}},{key:"ORDER",get:function(){return 4}}])&&Pb(e.prototype,r),n&&Pb(e,n),o}(Ob);kb.DEFAULT={ranges:[],hoverInteraction:!0,displayAmount:!0,selectInteraction:!0,distance:60,animated:!0,maxFeaturesToSelect:15,label:{text:function(t){var e,r=t.getAttribute("features");return r.length&&(e=r.length.toString()),e},color:"#fff",font:"bold 15px Arial",baseline:"middle",align:"center"}},kb.DEFAULT_VENDOR={animationDuration:250,animationMethod:"linear",distanceSelectFeatures:15,convexHullStyle:{fill:{color:"#fff",opacity:.25},stroke:{color:"#7b98bc"}}},kb.RANGE_1_DEFAULT={fill:{color:"#81c89a"},stroke:{color:"#6eb988",width:3},radius:15},kb.RANGE_2_DEFAULT={fill:{color:"#85b9d2"},stroke:{color:"#6da4be",width:3},radius:20},kb.RANGE_3_DEFAULT={fill:{color:"#938fcf"},stroke:{color:"#827ec5",width:3},radius:25};var jb=kb,Fb="bottom-left",Db="bottom-center",Gb="bottom-right",Ub="center-left",Bb="center-center",zb="center-right",Vb="top-left",qb="top-center",Yb="top-right";function Wb(t){return(Wb="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var Xb=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Hb="element",Zb="map",Kb="offset",Jb="position",$b="positioning",Qb=function(t){function e(e){var r=t.call(this)||this;r.on,r.once,r.un,r.options=e,r.id=e.id,r.insertFirst=void 0===e.insertFirst||e.insertFirst,r.stopEvent=void 0===e.stopEvent||e.stopEvent,r.element=document.createElement("div"),r.element.className=void 0!==e.className?e.className:"ol-overlay-container "+ti.d,r.element.style.position="absolute",r.element.style.pointerEvents="auto";var n=e.autoPan;return n&&"object"!==Wb(n)&&(n={animation:e.autoPanAnimation,margin:e.autoPanMargin}),r.autoPan=n||!1,r.rendered={transform_:"",visible:!0},r.mapPostrenderListenerKey=null,r.addChangeListener(Hb,r.handleElementChanged),r.addChangeListener(Zb,r.handleMapChanged),r.addChangeListener(Kb,r.handleOffsetChanged),r.addChangeListener(Jb,r.handlePositionChanged),r.addChangeListener($b,r.handlePositioningChanged),void 0!==e.element&&r.setElement(e.element),r.setOffset(void 0!==e.offset?e.offset:[0,0]),r.setPositioning(void 0!==e.positioning?e.positioning:Vb),void 0!==e.position&&r.setPosition(e.position),r}return Xb(e,t),e.prototype.getElement=function(){return this.get(Hb)},e.prototype.getId=function(){return this.id},e.prototype.getMap=function(){return this.get(Zb)||null},e.prototype.getOffset=function(){return this.get(Kb)},e.prototype.getPosition=function(){return this.get(Jb)},e.prototype.getPositioning=function(){return this.get($b)},e.prototype.handleElementChanged=function(){Object(oi.d)(this.element);var t=this.getElement();t&&this.element.appendChild(t)},e.prototype.handleMapChanged=function(){this.mapPostrenderListenerKey&&(Object(oi.e)(this.element),Object(Ci.c)(this.mapPostrenderListenerKey),this.mapPostrenderListenerKey=null);var t=this.getMap();if(t){this.mapPostrenderListenerKey=Object(Ci.a)(t,ro,this.render,this),this.updatePixelPosition();var e=this.stopEvent?t.getOverlayContainerStopEvent():t.getOverlayContainer();this.insertFirst?e.insertBefore(this.element,e.childNodes[0]||null):e.appendChild(this.element),this.performAutoPan()}},e.prototype.render=function(){this.updatePixelPosition()},e.prototype.handleOffsetChanged=function(){this.updatePixelPosition()},e.prototype.handlePositionChanged=function(){this.updatePixelPosition(),this.performAutoPan()},e.prototype.handlePositioningChanged=function(){this.updatePixelPosition()},e.prototype.setElement=function(t){this.set(Hb,t)},e.prototype.setMap=function(t){this.set(Zb,t)},e.prototype.setOffset=function(t){this.set(Kb,t)},e.prototype.setPosition=function(t){this.set(Jb,t)},e.prototype.performAutoPan=function(){this.autoPan&&this.panIntoView(this.autoPan)},e.prototype.panIntoView=function(t){var e=this.getMap();if(e&&e.getTargetElement()&&this.get(Jb)){var r=this.getRect(e.getTargetElement(),e.getSize()),n=this.getElement(),i=this.getRect(n,[Object(oi.c)(n),Object(oi.b)(n)]),o=t||{},a=void 0===o.margin?20:o.margin;if(!Object(mt.h)(r,i)){var s=i[0]-r[0],l=r[2]-i[2],u=i[1]-r[1],c=r[3]-i[3],h=[0,0];if(s<0?h[0]=s-a:l<0&&(h[0]=Math.abs(l)+a),u<0?h[1]=u-a:c<0&&(h[1]=Math.abs(c)+a),0!==h[0]||0!==h[1]){var f=e.getView().getCenterInternal(),p=e.getPixelFromCoordinateInternal(f);if(!p)return;var d=[p[0]+h[0],p[1]+h[1]],g=o.animation||{};e.getView().animateInternal({center:e.getCoordinateFromPixelInternal(d),duration:g.duration,easing:g.easing})}}}},e.prototype.getRect=function(t,e){var r=t.getBoundingClientRect(),n=r.left+window.pageXOffset,i=r.top+window.pageYOffset;return[n,i,n+e[0],i+e[1]]},e.prototype.setPositioning=function(t){this.set($b,t)},e.prototype.setVisible=function(t){this.rendered.visible!==t&&(this.element.style.display=t?"":"none",this.rendered.visible=t)},e.prototype.updatePixelPosition=function(){var t=this.getMap(),e=this.getPosition();if(t&&t.isRendered()&&e){var r=t.getPixelFromCoordinate(e),n=t.getSize();this.updateRenderedPosition(r,n)}else this.setVisible(!1)},e.prototype.updateRenderedPosition=function(t,e){var r=this.element.style,n=this.getOffset(),i=this.getPositioning();this.setVisible(!0);var o=Math.round(t[0]+n[0])+"px",a=Math.round(t[1]+n[1])+"px",s="0%",l="0%";i==Gb||i==zb||i==Yb?s="-100%":i!=Db&&i!=Bb&&i!=qb||(s="-50%"),i==Fb||i==Db||i==Gb?l="-100%":i!=Ub&&i!=Bb&&i!=zb||(l="-50%");var u="translate(".concat(s,", ").concat(l,") translate(").concat(o,", ").concat(a,")");this.rendered.transform_!=u&&(this.rendered.transform_=u,r.transform=u,r.msTransform=u)},e.prototype.getOptions=function(){return this.options},e}(ei.a);function tx(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};return ix(this,o),(t=i.call(this,{})).panMapIfOutOfView=e.panMapIfOutOfView,void 0===t.panMapIfOutOfView&&(t.panMapIfOutOfView=!0),t.ani_opts=e.ani_opts,void 0===t.ani_opts&&(t.ani_opts={duration:250}),t.facadeMap_=null,t.cachedAniPixel_=null,t}return e=o,(r=[{key:"addTo",value:function(t,e){this.facadeMap_=t,this.container=e,this.content=this.getContentFromContainer(e),BD(this.content),this.setElement(this.container),t.getMapImpl().addOverlay(this)}},{key:"show",value:function(t,e){return this.setPosition(t),this.panMapIfOutOfView&&this.panIntoView_(t),this.content.scrollTop=0,vD(e)&&e(),this}},{key:"centerByStatus",value:function(t,e){var r=this.getMap().getView().getResolution(),n=[].concat(e);if(t===Ox.status.COLLAPSED)n[1]-=.1*rx.HEIGHT*r;else{if(t!==Ox.status.DEFAULT)return;n[1]-=.275*rx.HEIGHT*r}var i=this.facadeMap_.getFeatureCenter();this.facadeMap_.setCenter({x:n[0],y:n[1]}),_D(i)||this.facadeMap_.drawFeatures([i])}},{key:"getContentFromContainer",value:function(t){return t.querySelector("div.m-body")}},{key:"panIntoView_",value:function(t){var e=this;return this.panIntoSynchronizedAnim_().then((function(){if(e.isAnimating_=!0,rx.WIDTH>768){var r=e.element.querySelector(".m-popup"),n=r.clientWidth+20,i=r.clientHeight+20+30,o=e.getMap().getSize(),a=e.getMap().getView().getCenter(),s=n-60,l=e.getOffset(),u=e.getMap().getPixelFromCoordinate(t);if(!_D(u)){var c=u[0]-60,h=o[0]-(u[0]+s),f=u[1]-(i+l[1]),p=o[1]-(u[1]+20)-l[1],d=e.getMap().getPixelFromCoordinate(a),g=d.slice();h<0?g[0]-=h:c<0&&(g[0]+=c),f<0?g[1]+=f:p<0&&(g[1]-=p),!_D(e.ani_opts)&&_D(e.ani_opts.source)&&(e.ani_opts.source=a,e.getMap().getView().animate(e.ani_opts)),g[0]===d[0]&&g[1]===d[1]||e.getMap().getView().setCenter(e.getMap().getCoordinateFromPixel(g))}}e.isAnimating_=!1})),this.getMap().getView().getCenter()}},{key:"panIntoSynchronizedAnim_",value:function(){var t=this;return new Promise((function(e,r){if(!0===t.isAnimating_){var n=300;_D(t.ani_opts)||(n=t.ani_opts.duration),setTimeout(e,n)}else e()}))}},{key:"hide",value:function(t){this.facadeMap_.removePopup(t)}},{key:"setContainer",value:function(t){this.setElement(t),this.content=this.getContentFromContainer(t),BD(this.content)}},{key:"getContent",value:function(){return this.content}}])&&ox(e.prototype,r),n&&ox(e,n),o}(Qb),hx=(r(143),r(91)),fx=r.n(hx);function px(t){return(px="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function dx(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};vx(this,t),this.icon=e.icon,this.title=e.title,this.content=e.content,this.listeners=e.listeners||[]},Ex=function(t){!function(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}}),e&&gx(t,e)}(o,t);var e,r,n,i=yx(o);function o(t){var e;vx(this,o);var r=new cx(t);return(e=i.call(this,r)).coord_=null,e.tabs_=[],e.element_=null,e.status_=o.status.COLLAPSED,bx+=1,e.id_="m-popup-".concat(bx),e}return e=o,(r=[{key:"getId",value:function(){return this.id_}},{key:"getTabs",value:function(){return this.tabs_}},{key:"removeTab",value:function(t){var e=[],r=null;this.tabs_.forEach((function(n){n.content!==t.content?e.push(n):r=n})),this.tabs_=this.tabs_.filter((function(e){return e.content!==t.content})),this.fire(au,[r]),this.update()}},{key:"addTab",value:function(t){var e=t;e instanceof wx||(e=new wx(t),this.fire(ou,[e])),this.tabs_.push(e),this.update()}},{key:"addTo",value:function(t,e){if(this.map_=t,_D(this.element_)){var r=lG(e,this.map_.getProjection().code,"EPSG:4326"),n=sG(),i=bu(fx.a,{jsonp:!0,vars:{id:this.id_,tabs:this.tabs_,options:o.options,url:xx(n,r)}});this.tabs_.length>0&&(this.element_=i,this.addEvents(i),this.getImpl().addTo(t,i),this.show(e))}else this.getImpl().addTo(t,this.element_),this.show(e);this.fire(nu,[this]),t.fire(nu,[this])}},{key:"update",value:function(){if(!_D(this.map_)){var t=lG(this.coord_,this.map_.getProjection().code,"EPSG:4326"),e=sG(),r=bu(fx.a,{jsonp:!0,vars:{tabs:this.tabs_,options:o.options,url:xx(e,t)}});this.tabs_.length>0&&(this.element_=r,this.addEventTabs(this.tabs_[0],r),this.addEvents(r),this.getImpl().setContainer(r),this.show(this.coord_))}}},{key:"show",value:function(t){var e=this;this.coord_=t,this.getImpl().show(this.coord_,(function(){e.fire(Ul)}))}},{key:"hide",value:function(t){_D(t)||t.preventDefault(),this.getImpl().hide(this)}},{key:"switchTab",value:function(t){if(this.tabs_.length>t){var e=this.tabs_[t];this.setContent_(e.content),this.addEventTabs(e,this.getContent()),this.show(this.coord_)}}},{key:"addEventTabs",value:function(t,e){t.listeners.forEach((function(t){!0===t.all?e.querySelectorAll(t.selector).forEach((function(e){e.addEventListener(t.type,(function(e){return t.callback(e)}))})):e.querySelector(t.selector).addEventListener(t.type,(function(e){return t.callback(e)}))}))}},{key:"setContent_",value:function(t){this.getContent().innerHTML=t}},{key:"getContent",value:function(){return this.getImpl().getContent()}},{key:"addEvents",value:function(t){var e,r=this,n=t,i=n.querySelectorAll("div.m-tab");Array.prototype.forEach.call(i,(function(t){t.addEventListener("click",(function(n){n.preventDefault();var o=n.clientY;if("click"===n.type||Math.abs(e-o)<5){Array.prototype.forEach.call(i,(function(t){t.classList.remove("m-activated")})),t.classList.add("m-activated");var a=t.getAttribute("data-index");r.switchTab(a)}})),t.addEventListener("touchend",(function(n){n.preventDefault();var o=n.clientY;if("touchend"===n.type||Math.abs(e-o)<5){Array.prototype.forEach.call(i,(function(t){t.classList.remove("m-activated")})),t.classList.add("m-activated");var a=t.getAttribute("data-index");r.switchTab(a)}}))}));var a=n.querySelector("a.m-popup-closer");a.addEventListener("click",this.hide.bind(this),!1),a.addEventListener("touchend",this.hide.bind(this),!1);var s=n.querySelector("div.m-tabs");if(_D(s)&&(s=n.querySelector("div.m-content > div.m-header")),!_D(s)){var l;s.addEventListener("touchstart",(function(t){t.preventDefault(),e=t.touches[0].clientY,r.status_===o.status.COLLAPSED?l=.9*rx.HEIGHT:r.status_===o.status.DEFAULT?l=.45*rx.HEIGHT:r.status_===o.status.FULL&&(l=0),n.classList.add("m-no-animation")}),!1),s.addEventListener("touchmove",(function(t){t.preventDefault(),r.touchY=t.touches[0].clientY;var i=r.touchY-e;n.style.top="".concat(l+i,"px")}),!1),s.addEventListener("touchend",(function(t){t.preventDefault(),r.manageCollapsiblePopup_(e,r.touchY)}),!1);var u=window.matchMedia("(max-width: 768px)");setTimeout((function(){return r.manageTransform(u,n)}),10),u.addEventListener("change",(function(t){r.manageTransform(t,n)})),s.addEventListener("mouseup",(function(t){t.preventDefault(),r.tabs_.length<=1&&(r.status_===o.status.COLLAPSED?r.setStatus_(o.status.DEFAULT):r.status_===o.status.DEFAULT?r.setStatus_(o.status.FULL):r.setStatus_(o.status.COLLAPSED))}))}}},{key:"setStatus_",value:function(t){t!==this.status_&&(this.element_.classList.remove(this.status_),this.status_=t,this.element_.classList.add(this.status_),this.element_.style.top="",this.element_.classList.remove("m-no-animation"),rx.WIDTH<=M.config.MOBILE_WIDTH&&this.getImpl().centerByStatus(t,this.coord_))}},{key:"manageTransform",value:function(t,e){e&&e.parentElement&&(t.matches?e.parentElement.classList.add("unsetTransform"):e.parentElement.classList.remove("unsetTransform"))}},{key:"manageCollapsiblePopup_",value:function(t,e){var r=100*e/rx.HEIGHT;100*Math.abs(t-e)/rx.HEIGHT>10?this.status_===o.status.COLLAPSED?r<45?this.setStatus_(o.status.FULL):r<85?this.setStatus_(o.status.DEFAULT):this.setStatus_(o.status.COLLAPSED):this.status_===o.status.DEFAULT?r>45?this.setStatus_(o.status.COLLAPSED):r<45?this.setStatus_(o.status.FULL):this.setStatus_(o.status.DEFAULT):this.status_===o.status.FULL&&(r>45?this.setStatus_(o.status.COLLAPSED):r>0?this.setStatus_(o.status.DEFAULT):this.setStatus_(o.status.FULL)):this.setStatus_(this.status_)}},{key:"getCoordinate",value:function(){return this.coord_}},{key:"setCoordinate",value:function(t){this.coord_=t,_D(this.element_)||this.getImpl().show(t)}},{key:"destroy",value:function(){this.tabs_.length=0,this.coord_=null,this.fire(zl)}}])&&dx(e.prototype,r),n&&dx(e,n),o}(Il);Ex.status={},Ex.status.COLLAPSED="m-collapsed",Ex.status.DEFAULT="m-default",Ex.status.FULL="m-full",Ex.options={takeMeThere:!1,textMode:!0,msg:"Llévame allí"};var Ox=Ex,Sx=r(100),Ix=r.n(Sx);function Cx(t){return(Cx="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Tx(t){return function(t){if(Array.isArray(t))return Px(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return Px(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Px(t,e)}(t)||function(){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 Px(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r2&&void 0!==arguments[2])||arguments[2];!0===i?t.forEach((function(t){var e=n.features_.find((function(e){return e.equals(t)}));_D(e)&&n.features_.push(t)})):(r=this.features_).push.apply(r,Tx(t)),e&&this.updateLayer_();var o=this.facadeVector_.getStyle();o instanceof jb?(o.getImpl().deactivateTemporarilyChangeEvent(this.redraw.bind(this)),o.refresh()):this.redraw()}},{key:"updateLayer_",value:function(){var t=this.facadeVector_.getStyle();if(!_D(t))if(t instanceof Em)this.facadeVector_.setStyle(t);else if(t instanceof jb){var e=this.facadeVector_.getStyle();e.unapply(this.facadeVector_),e.getOldStyle().apply(this.facadeVector_),e.apply(this.facadeVector_)}else t.apply(this.facadeVector_)}},{key:"getFeatures",value:function(t,e){var r=this.features_;return t||(r=e.execute(r)),r}},{key:"getFeatureById",value:function(t){return this.features_.filter((function(e){return e.getId()===t}))[0]}},{key:"removeFeatures",value:function(t){this.features_=this.features_.filter((function(e){return!t.includes(e)}));var e=this.facadeVector_.getStyle();e instanceof jb?(e.getImpl().deactivateTemporarilyChangeEvent(this.redraw.bind(this)),e.refresh()):this.redraw()}},{key:"redraw",value:function(){var t=this.getOLLayer();if(!_D(t)){var e=this.facadeVector_.getStyle(),r=t.getSource();r instanceof Rg&&(r=r.getSource()),e instanceof jb&&e.getImpl().deactivateChangeEvent(),Tx(r.getFeatures()).forEach(r.removeFeature,r);var n=this.facadeVector_.getFeatures();r.addFeatures(n.map(cG.facade2OLFeature)),e instanceof jb&&e.getImpl().activateChangeEvent()}}},{key:"getFeaturesExtent",value:function(t,e){var r=this.getFeatures(t,e),n=wh.getFeaturesExtent(r,this.map.getProjection().code);return null===n&&(n=this.map.getProjection().getExtent()),n}},{key:"selectFeatures",value:function(t,e,r){var n=t[0];if(!(n instanceof EG||!0!==this.extract||(this.unselectFeatures(),_D(n)))){var i=n.getAttribute("vendor.mapea.click");if(vD(i))i(r,n);else{var o=bu(Ix.a,{vars:this.parseFeaturesForTemplate_(t),parseToHtml:!1}),a={icon:"g-cartografia-pin",title:this.name,content:o},s=this.map.getPopup();_D(s)?((s=new Ox).addTab(a),this.map.addPopup(s,e)):s.addTab(a)}}}},{key:"unselectFeatures",value:function(){}},{key:"setFacadeObj",value:function(t){this.facadeVector_=t}},{key:"setProjection_",value:function(t,e){if(t.code!==e.code){var r=Object(u.o)(t.code),n=Object(u.o)(e.code),i=this.facadeVector_.getStyle();i instanceof jb&&i.getImpl().deactivateChangeEvent(),this.facadeVector_.getFeatures().forEach((function(t){return t.getImpl().getOLFeature().getGeometry().transform(r,n)})),i instanceof jb&&i.getImpl().activateChangeEvent()}}},{key:"parseFeaturesForTemplate_",value:function(t){var e=this,r={features:[]};return t.forEach((function(t){if(!(t instanceof EG)){var n=t.getAttributes(),i=Object.keys(n),o=[];i.forEach((function(t){var r=!0;_D(e.showAttributes_)?_D(e.hiddenAttributes_)||(r=!DD(e.hiddenAttributes_,t)):r=DD(e.showAttributes_,t),r&&o.push({key:jD(t),value:n[t]})}));var a={id:t.getId(),attributes:o};r.features.push(a)}})),r}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&this.constructor===t.constructor&&(e=!0),e}},{key:"refresh",value:function(){this.getOLLayer().getSource().clear()}},{key:"isLoaded",value:function(){return this.loaded_}},{key:"destroy",value:function(){var t=this.map.getMapImpl();_D(this.ol3Layer)||(t.removeLayer(this.ol3Layer),this.ol3Layer=null),this.map=null}}])&&Rx(e.prototype,r),n&&Rx(e,n),o}(Rh),jx=(r(145),r(101)),Fx=r.n(jx),Dx=function(t,e,r){var n,i={message:t,title:e,severity:r},o=bu(Fx.a,{vars:i});n=document.querySelectorAll("div.m-dialog"),Array.prototype.forEach.call(n,(function(t){t.parentElement.removeChild(t)}));var a=document.querySelector("div.m-mapea-container");o.querySelector("div.m-button > button").addEventListener("click",(function(t){var e;(e=o).parentElement.removeChild(e)})),a.appendChild(o)},Gx=function(t,e){var r=e;return _D(r)&&(r=uu("dialog").info),Dx(t,r,"info")},Ux=function(t,e){var r=e;return _D(r)&&(r=uu("dialog").error),Dx(t,r,"error")},Bx=function(t,e){var r=e;return _D(r)&&(r=uu("dialog").success),Dx(t,r,"success")};function zx(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};return Yx(this,o),(t=i.call(this,e)).textOverflow_=void 0!==e.textOverflow?e.textOverflow:"",t.minWidth_=e.minWidth||0,t}return e=o,(r=[{key:"getTextOverflow",value:function(){return this.textOverflow_}},{key:"getMinWidth",value:function(){return this.minWidth_}}])&&Wx(e.prototype,r),n&&Wx(e,n),o}(Yg),Qx=function(t,e,r){var n;if(!_D(t.fill)){var i=By.getValue(t.fill.color,e,r),o=By.getValue(t.fill.opacity,e,r);o||0===o||(o=1),_D(i)||(n=new zg({color:l()(i).alpha(o).css()}))}return n},tw=function(t,e,r){var n;if(!_D(t.stroke)){var i=By.getValue(t.stroke.color,e,r);if(!_D(i)){var o=t.stroke.linedashoffset;n=new Bg({color:i,width:By.getValue(t.stroke.width,e,r),lineDash:By.getValue(t.stroke.linedash,e,r),lineDashOffset:By.getValue(o,e,r),lineCap:By.getValue(t.stroke.linecap,e,r),lineJoin:By.getValue(t.stroke.linejoin,e,r),miterLimit:By.getValue(t.stroke.miterlimit,e,r)})}}return n},ew=function(t,e,r){var o;if(t.label){var a=By.getValue(t.label.text,e,r),s=By.getValue(t.label.align,e,r),l=By.getValue(t.label.baseline,e,r);if(o=new Yg({font:By.getValue(t.label.font,e,r),rotateWithView:By.getValue(t.label.rotate,e,r),scale:By.getValue(t.label.scale,e,r),offsetX:By.getValue(t.label.offset?t.label.offset[0]:void 0,e,r),offsetY:By.getValue(t.label.offset?t.label.offset[1]:void 0,e,r),fill:new zg({color:By.getValue(t.label.color||"#000",e,r)}),textAlign:Object.values(i).includes(s)?s:"center",textBaseline:Object.values(n).includes(l)?l:"top",text:void 0===a?void 0:String(a),rotation:By.getValue(t.label.rotation,e,r)}),!_D(t.label.stroke)){var u=t.label.stroke,c=u.miterlimit,h=u.linedashoffset;o.setStroke(new Bg({color:By.getValue(t.label.stroke.color,e,r),width:By.getValue(t.label.stroke.width,e,r),lineCap:By.getValue(t.label.stroke.linecap,e,r),lineJoin:By.getValue(t.label.stroke.linejoin,e,r),lineDash:By.getValue(t.label.stroke.linedash,e,r),lineDashOffset:By.getValue(h,e,r),miterLimit:By.getValue(c,e,r)}))}}return o},rw={},nw=function(t,e,r){var n=t||{},i=Qx(n,e,r),o=tw(n,e,r),a=new C_({fill:i,stroke:o,radius:By.getValue(n.radius,e,r),snapToPixel:By.getValue(n.snapToPixel,e,r)}),s=new $y({image:a}),l=new $y;if(!_D(n.icon)){var u,c=By.getValue(n.icon.src,e,r);_D(c)?_D(n.icon.form)||(u=function(t,e,r){return new h_({form:_D(By.getValue(t.icon.form,e,r))?"":By.getValue(t.icon.form,e,r).toLowerCase(),gradient:By.getValue(t.icon.gradient,e,r),glyph:By.getValue(t.icon.class,e,r),fontSize:By.getValue(t.icon.fontsize,e,r),radius:By.getValue(t.icon.radius,e,r),rotation:By.getValue(t.icon.rotation,e,r),rotateWithView:By.getValue(t.icon.rotate,e,r),offsetX:By.getValue(t.icon.offset?t.icon.offset[0]:void 0,e,r),offsetY:By.getValue(t.icon.offset?t.icon.offset[1]:void 0,e,r),fill:new zg({color:By.getValue(void 0!==t.icon.fill?t.icon.fill:"#FFFFFF",e,r)}),stroke:t.icon.color?new Bg({color:By.getValue(t.icon.color,e,r),width:1}):void 0,anchor:By.getValue(t.icon.anchor,e,r),anchorXUnits:By.getValue(t.icon.anchorxunits,e,r),anchorYUnits:By.getValue(t.icon.anchoryunits,e,r),src:By.getValue(t.icon.src,e,r),opacity:By.getValue(t.icon.opacity,e,r),scale:By.getValue(t.icon.scale,e,r),snapToPixel:By.getValue(t.icon.snaptopixel,e,r),offsetOrigin:By.getValue(t.icon.offsetorigin,e,r),offset:By.getValue(t.icon.offset,e,r),crossOrigin:By.getValue(t.icon.crossorigin,e,r),anchorOrigin:By.getValue(t.icon.anchororigin,e,r),size:By.getValue(t.icon.size,e,r)})}(n,e,r),l.setImage(u)):(u=function(t,e,r){var n=By.getValue(t.icon.anchor,e,r),i=By.getValue(t.icon.anchorxunits,e,r),o=By.getValue(t.icon.anchoryunits,e,r),a=By.getValue(t.icon.src,e,r),s=By.getValue(t.icon.opacity,e,r),l=By.getValue(t.icon.scale,e,r),u=By.getValue(t.icon.rotation,e,r),c=By.getValue(t.icon.rotate,e,r),h=By.getValue(t.icon.snaptopixel,e,r),f=By.getValue(t.icon.offsetorigin,e,r),p=By.getValue(t.icon.offset,e,r),d=By.getValue(t.icon.crossorigin,e,r),g=By.getValue(t.icon.anchororigin,e,r),y=a+n+i+o+s+l+u+c+h+f+p+d+g+g+By.getValue(t.icon.size,e,r),m=rw[y];return m||(m=new v_({anchor:By.getValue(t.icon.anchor,e,r),anchorXUnits:By.getValue(t.icon.anchorxunits,e,r),anchorYUnits:By.getValue(t.icon.anchoryunits,e,r),src:By.getValue(t.icon.src,e,r),opacity:By.getValue(t.icon.opacity,e,r),scale:By.getValue(t.icon.scale,e,r),rotation:By.getValue(t.icon.rotation,e,r),rotateWithView:By.getValue(t.icon.rotate,e,r),snapToPixel:By.getValue(t.icon.snaptopixel,e,r),offsetOrigin:By.getValue(t.icon.offsetorigin,e,r),offset:By.getValue(t.icon.offset,e,r),crossOrigin:By.getValue(t.icon.crossorigin,e,r),anchorOrigin:By.getValue(t.icon.anchororigin,e,r),size:By.getValue(t.icon.size,e,r)}),rw[y]=m),m}(n,e,r),l.setImage(u))}var h=ew(n,e,r);return _D(n.label)||dD(h.getText())||s.setText(h),[s,l]},iw=function(t,e,r){var n=t||{},i=tw(n,e,r),o=function(t,e,r){var n;if(!_D(t.fill)){var i=By.getValue(t.fill.color,e,r),o=By.getValue(t.fill.opacity,e,r);o||0===o||(o=1);var a=By.getValue(t.fill.width,e,r);_D(i)||(n=new Bg({color:l()(i).alpha(o).css(),width:a}))}return n}(n,e,r),a=function(t,e,r){var n,i=t.label;if(!_D(i)){var o={text:void 0===By.getValue(i.text,e)?void 0:String(By.getValue(i.text,e)),font:By.getValue(i.font,e),fill:new zg({color:By.getValue(i.color||"#000",e)}),textBaseline:(By.getValue(i.baseline,e)||"").toLowerCase(),textAlign:By.getValue(i.align,e),scale:By.getValue(i.scale,e),rotateWithView:By.getValue(i.rotate,e)||!1,textOverflow:By.getValue(i.textoverflow,e)||"",minWidth:By.getValue(i.minwidth,e)||0,geometry:By.getValue(i.geometry,e),offsetX:By.getValue(t.label.offset?t.label.offset[0]:void 0,e),offsetY:By.getValue(t.label.offset?t.label.offset[1]:void 0,e)};n=new $x(o),_D(i.stroke)||n.setStroke(new Bg({color:By.getValue(i.stroke.color,e),width:By.getValue(i.stroke.width,e),lineCap:By.getValue(i.stroke.linecap,e),lineJoin:By.getValue(i.stroke.linejoin,e),lineDash:By.getValue(i.stroke.linedash,e),lineDashOffset:By.getValue(i.stroke.linedashoffset,e),miterLimit:By.getValue(i.stroke.miterlimit,e)}))}return n}(n,e),s=new $y,u=new $y;_D(a)||(!0===By.getValue(a.path,e)?(s.textPath=a,!_D(a.smooth)&&!0===a.smooth&&vD(e.getGeometry)&&s.setGeometry(e.getGeometry().cspline())):s.setText(a));return s.setStroke(i),u.setStroke(o),[s,u]},ow=function(t,e,r){var n=t||{},i=new $y,o=tw(n,e,r),a=Qx(n,e,r),s=ew(n,e,r);return n.fill&&!_D(n.fill.pattern)&&(a=function(t,e,r,n){var i="rgba(0,0,0,1)";if(!_D(t.fill.pattern.color)){var o=By.getValue(t.fill.pattern.opacity,e,r)||1;o||0===o||(o=1),i=l()(t.fill.pattern.color).alpha(o).css()}return new Ry({pattern:(By.getValue(t.fill.pattern.name,e,r)||"").toLowerCase(),color:i,size:By.getValue(t.fill.pattern.size,e,r),spacing:By.getValue(t.fill.pattern.spacing,e,r),image:"IMAGE"===By.getValue(t.fill.pattern.name,e,r)?new iy({src:By.getValue(t.fill.pattern.src,e,r)}):void 0,angle:By.getValue(t.fill.pattern.rotation,e,r),scale:By.getValue(t.fill.pattern.scale,e,r),offset:By.getValue(t.fill.pattern.offset,e,r),fill:n})}(n,e,r)),i.setFill(a),i.setStroke(o),i.setText(s),[i]};function aw(t){return(aw="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function sw(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function lw(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};return sw(this,o),(t=i.call(this,e)).styles_={},t}return e=o,(r=[{key:"toImage",value:function(){var t=this,e=30,r=null,n=null,i=null,o=oG(),a=[];dD(this.options_.point)||(r=function(r){return new Promise((function(n,i){var o=new Image;if(o.onload=function(){return n(o)},o.onerror=i,o.width=e,o.height=e,!0===nG(t.options_.point))o.src=r;else{var a=(0,dw.Point)(t.options_,t,t.layer_);a[0].getImage().setRadius(5);var s=a[0].getImage().getImage(1).toDataURL();o.src=s}}))},a.push(r(o))),dD(this.options_.polygon)||(n=function(r){return new Promise((function(n,i){var o=new Image;if(o.onload=function(){return n(o)},o.onerror=i,!0===nG(t.options_.polygon))o.src=r,o.width=e,o.height=e;else{var a=(0,dw.Polygon)(t.options_,t,t.layer_),s=document.createElement("canvas");s.width=e,s.height=e;var l=xy(s.getContext("2d"));l.setStyle(a[0],0,0);var u=[25,15],c=Math.floor(u[0]),h=Math.floor(u[1]),f=u[0]-c,p=u[1]-h;l.drawGeometry(new Oa([[[f+3,p+3],[c-3,p+3],[c-3,h-3],[f+3,h-3],[f+3,p+3]]])),o.src=s.toDataURL()}}))},a.push(n(o))),dD(this.options_.line)||(i=function(e){return new Promise((function(r,n){var i=new Image;if(i.onload=function(){return r(i)},i.onerror=n,!0===nG(t.options_.line))i.src=e,i.width=30,i.height=30;else{var o=(0,dw.LineString)(t.options_,t,t.layer_),a=document.createElement("canvas");a.width=30,a.height=30;var s=xy(a.getContext("2d"));s.setStyle(o[0],0,0);var l=dD(o[0].getStroke())?1.5:o[0].getStroke().getWidth();s.drawGeometry(new Qc([[0+l/2,0+l/2],[25/3,7.5-l/2],[50/3,0+l/2],[25-l/2,7.5-l/2]])),i.src=a.toDataURL()}}))},a.push(i(o)));var s=document.createElement("canvas");s.width=200,s.height=50;var l=s.getContext("2d"),u=[0,60,120],c=0;return Promise.all(a).then((function(t){return t.forEach((function(t){l.drawImage(t,u[c],0),c+=1})),s.toDataURL()}))}},{key:"updateFacadeOptions",value:function(t){var e=this;this.olStyleFn_=function(r){var n=JSON.stringify(r.getProperties()),i=[];e.styles_=[];var o=r;if(o instanceof Wc||o instanceof lh){var a=o.getGeometry().getType(),s=dw[a];vD(s)&&(i=s(t,o,e.layer_),e.styles_[n]=i)}else o=e;return i}}},{key:"drawGeometryToCanvas",value:function(t){}},{key:"updateCanvas",value:function(t){}},{key:"getCanvasSize",value:function(){return 0}},{key:"getRadius_",value:function(t){return t instanceof iy?25:t instanceof i_?t.getRadius():this.olStyleFn_()[0].getImage().getRadius()}}])&&lw(e.prototype,r),n&&lw(e,n),o}(By);function yw(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function mw(t){for(var e=1;e M.style.Simple.deserialize(serializedParameters, 'M.style.Generic'))"}}])&&bw(e.prototype,r),n&&bw(e,n),o}(Bm);Sw.DEFAULT={point:{radius:5}},Sw.PARAMS_DEFAULT_NULL={fill:{color:"rgba(255, 255, 255, 0.4)",opacity:.4},stroke:{color:"#3399CC",width:1.5}},Sw.DEFAULT_NULL={point:mw(mw({},Sw.PARAMS_DEFAULT_NULL),{},{radius:5}),line:mw({},Sw.PARAMS_DEFAULT_NULL),polygon:mw({},Sw.PARAMS_DEFAULT_NULL)};var Iw=Sw;function Cw(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Tw(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0;Lw(this,o);var s=a||new kx(r,n);return t=i.call(this,e,s),dD(kx)&&_l(uu("exception").vectorlayer_method),t.extract=e.extract,_D(t.extract)&&(t.extract=!0),t.style_=null,t.filter_=null,t.setStyle(r.style),s.on(Xl,(function(e){return t.fire(Xl,[e])})),t}return e=o,(r=[{key:"addFeatures",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=t;_D(n)||(mD(n)||(n=[n]),this.getImpl().addFeatures(n,e,r))}},{key:"getFeatures",value:function(t){var e=t;return _D(this.getFilter())&&(e=!0),this.getImpl().getFeatures(e,this.filter_)}},{key:"getFeatureById",value:function(t){var e=null;return _D(t)?Ux(uu("dialog").id_feature):e=this.getImpl().getFeatureById(t),e}},{key:"removeFeatures",value:function(t){var e=t;mD(e)||(e=[e]),this.getImpl().removeFeatures(e)}},{key:"clear",value:function(){this.removeFilter(),this.removeFeatures(this.getFeatures(!0))}},{key:"refresh",value:function(){this.getImpl().refresh(!0),this.redraw()}},{key:"redraw",value:function(){this.getImpl().redraw()}},{key:"setFilter",value:function(t){if(_D(t)||t instanceof Vx){this.filter_=t;var e=this.style_;e instanceof jb&&e.getImpl().deactivateChangeEvent(),this.redraw(),e instanceof jb&&(e.getImpl().activateChangeEvent(),e.refresh())}else Ux(uu("dialog").vector_filter)}},{key:"getFilter",value:function(){return this.filter_}},{key:"getFeaturesExtent",value:function(t){var e=t;return _D(this.getFilter())&&(e=!0),this.getImpl().getFeaturesExtent(e,this.filter_)}},{key:"removeFilter",value:function(){this.setFilter(null)}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.name===t.name),e}},{key:"setStyle",value:function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.DEFAULT_OPTIONS_STYLE;this.getImpl().isLoaded()?(_D(this.getStyle())&&this.applyStyle_(n,r),_D(t)||this.applyStyle_(t,r)):this.once(Xl,(function(){_D(e.getStyle())&&e.applyStyle_(n,r),_D(t)||e.applyStyle_(t,r)}))}},{key:"applyStyle_",value:function(t,e){var r=t;if(xD(r)?r=Em.deserialize(r):r instanceof Em||(r=new Iw(r)),r instanceof Em&&(!_D(this.style_)&&this.style_ instanceof Em&&this.style_.unapply(this),r.apply(this,e),this.style_=r,this.fire($l,[r,this])),!_D(this.getImpl().getMap())){var n=this.getImpl().getMap().getControls("layerswitcher")[0];_D(n)||n.render()}this.fire($l,[r,this])}},{key:"getStyle",value:function(){return this.style_}},{key:"clearStyle",value:function(){this.setStyle(null),this.getFeatures().forEach((function(t){return t.clearStyle()}))}},{key:"getLegendURL",value:function(){var t=this.getImpl().getLegendURL();return-1!==t.indexOf(Lc.LEGEND_DEFAULT)&&-1===t.indexOf(Lc.LEGEND_ERROR)&&this.style_ instanceof Em&&(t=this.style_ instanceof jb&&this.style_.getStyles().length>0?this.style_.getStyles()[0].toImage():this.style_.toImage()),t}},{key:"getGeometryType",value:function(){var t=null;if(!_D(this.getFeatures())){var e=this.getFeatures()[0];_D(e)||_D(e.getGeometry())||(t=e.getGeometry().type)}return t}},{key:"getMaxExtent",value:function(){return this.getFeaturesExtent()}},{key:"calculateMaxExtent",value:function(){return this.getImpl().getFeaturesExtentPromise(!0,this.filter_)}},{key:"toGeoJSON",value:function(){var t=this.map_.getProjection().code,e=this.getFeatures().map((function(t){return t.getGeoJSON()}));return{type:"FeatureCollection",features:xh(e,t)}}},{key:"type",get:function(){return Gu},set:function(t){dD(t)||_D(t)||t===Gu||_l("El tipo de capa debe ser '".concat(Gu).concat("' pero se ha especificado '").concat(t).concat("'"))}},{key:"extract",get:function(){return this.getImpl().extract},set:function(t){_D(t)?this.getImpl().extract=!0:xD(t)?this.getImpl().extract="true"===OD(t):this.getImpl().extract=t}}])&&Mw(e.prototype,r),n&&Mw(e,n),o}(Lc);Fw.DEFAULT_PARAMS={fill:{color:"rgba(255, 255, 255, 0.4)",opacity:.4},stroke:{color:"#3399CC",width:1.5}},Fw.DEFAULT_OPTIONS_STYLE={point:Tw(Tw({},Fw.DEFAULT_PARAMS),{},{radius:5}),line:Tw({},Fw.DEFAULT_PARAMS),polygon:Tw({},Fw.DEFAULT_PARAMS)};var Dw=Fw;function Gw(t){return(Gw="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Uw(t){return function(t){if(Array.isArray(t))return Bw(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return Bw(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Bw(t,e)}(t)||function(){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 Bw(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0){r.forEach((function(t){t instanceof Lc?i.layers.push(o.parseLayerForTemplate(t)):t instanceof Kd&&i.layerGroups.push(o.parseGroupForTemplate(t,e))}));var s=0,l=t.getAllLayers();l.every((function(t){return t.isVisible()}))?s=2:l.some((function(t){return t.isVisible()}))&&(s=1),i.visible=s,_D(i.layers)&&_D(i.layerGroups)&&(i=null),yD(i)||(a=new Promise((function(t,e){Promise.all(i.layers).then((function(e){_D(i)||(i.layers=e,i.layerGroups.length>0?Promise.all(i.layerGroups).then((function(e){yD(e[0])?i.layerGroups=[]:i.layerGroups=e,t(i)})):t(i))}))})))}return a}},{key:"orderLayerGroups",value:function(t){return t.sort((function(t,e){return t.order-e.order}))}}],(r=[{key:"addTo",value:function(t){var e=this;this.map_=t;var r=this.getImpl();this.createView(t).then((function(n){e.manageActivation(n),r.addTo(t,n),e.fire(Cl)}))}},{key:"createView",value:function(t){var e=this;return new Promise((function(t){o.getTemplateVariables(e.map_).then((function(e){var r=bu(Nd.a,{vars:e});t(r)}))}))}},{key:"equals",value:function(t){var e=t instanceof o;return e}},{key:"render",value:function(){this.getImpl().renderPanel()}},{key:"registerEvents",value:function(){this.getImpl().registerEvents()}},{key:"unregisterEvents",value:function(){this.getImpl().unregisterEvents()}}])&&zw(e.prototype,r),n&&zw(e,n),o}(yu);Xw.NAME="layerswitcher";var Hw=Xw,Zw=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Kw="accuracy",Jw="accuracyGeometry",$w="altitude",Qw="altitudeAccuracy",tE="heading",eE="position",rE="projection",nE="speed",iE="tracking",oE="trackingOptions",aE=function(t){function e(e){var r=t.call(this,Di.a.ERROR)||this;return r.code=e.code,r.message=e.message,r}return Zw(e,t),e}(Ni.a),sE=function(t){function e(e){var r=t.call(this)||this;r.on,r.once,r.un;var n=e||{};return r.position_=null,r.transform_=u.t,r.watchId_=void 0,r.addChangeListener(rE,r.handleProjectionChanged_),r.addChangeListener(iE,r.handleTrackingChanged_),void 0!==n.projection&&r.setProjection(n.projection),void 0!==n.trackingOptions&&r.setTrackingOptions(n.trackingOptions),r.setTracking(void 0!==n.tracking&&n.tracking),r}return Zw(e,t),e.prototype.disposeInternal=function(){this.setTracking(!1),t.prototype.disposeInternal.call(this)},e.prototype.handleProjectionChanged_=function(){var t=this.getProjection();t&&(this.transform_=Object(u.r)(Object(u.o)("EPSG:4326"),t),this.position_&&this.set(eE,this.transform_(this.position_)))},e.prototype.handleTrackingChanged_=function(){if("geolocation"in navigator){var t=this.getTracking();t&&void 0===this.watchId_?this.watchId_=navigator.geolocation.watchPosition(this.positionChange_.bind(this),this.positionError_.bind(this),this.getTrackingOptions()):t||void 0===this.watchId_||(navigator.geolocation.clearWatch(this.watchId_),this.watchId_=void 0)}},e.prototype.positionChange_=function(t){var e=t.coords;this.set(Kw,e.accuracy),this.set($w,null===e.altitude?void 0:e.altitude),this.set(Qw,null===e.altitudeAccuracy?void 0:e.altitudeAccuracy),this.set(tE,null===e.heading?void 0:Object(mo.m)(e.heading)),this.position_?(this.position_[0]=e.longitude,this.position_[1]=e.latitude):this.position_=[e.longitude,e.latitude];var r=this.transform_(this.position_);this.set(eE,r),this.set(nE,null===e.speed?void 0:e.speed);var n=Sa(this.position_,e.accuracy);n.applyTransform(this.transform_),this.set(Jw,n),this.changed()},e.prototype.positionError_=function(t){this.dispatchEvent(new aE(t))},e.prototype.getAccuracy=function(){return this.get(Kw)},e.prototype.getAccuracyGeometry=function(){return this.get(Jw)||null},e.prototype.getAltitude=function(){return this.get($w)},e.prototype.getAltitudeAccuracy=function(){return this.get(Qw)},e.prototype.getHeading=function(){return this.get(tE)},e.prototype.getPosition=function(){return this.get(eE)},e.prototype.getProjection=function(){return this.get(rE)},e.prototype.getSpeed=function(){return this.get(nE)},e.prototype.getTracking=function(){return this.get(iE)},e.prototype.getTrackingOptions=function(){return this.get(oE)},e.prototype.setProjection=function(t){this.set(rE,Object(u.o)(t))},e.prototype.setTracking=function(t){this.set(iE,t)},e.prototype.setTrackingOptions=function(t){this.set(oE,t)},e}(ei.a);function lE(t){return(lE="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function uE(t,e){for(var r=0;r0&&void 0!==arguments[0])||arguments[0],e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};bE(this,o),dD(yE)&&_l(uu("exception").location_method);var n=new yE(t,e,6e4,r);return i.call(this,n,o.NAME)}return e=o,(r=[{key:"createView",value:function(t){return bu(_E.a,{vars:{title:uu("location").title}})}},{key:"getActivationButton",value:function(t){return t.querySelector("button#m-location-button")}},{key:"equals",value:function(t){var e=t instanceof o;return e}},{key:"setTracking",value:function(t){this.getImpl().tracking=t}}])&&xE(e.prototype,r),n&&xE(e,n),o}(yu);IE.NAME="location";var CE=IE,TE=(r(93),r(103)),PE=r.n(TE);function RE(t){return(RE="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function LE(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function ME(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};return LE(this,o),(t=i.call(this)).facadeMap_=null,t.exactScale=e.exactScale||!1,t}return e=o,(r=[{key:"addTo",value:function(t,e){this.facadeMap_=t,this.scaleContainer_=e.querySelector("#".concat("m-scale-span")),this.element=e,this.render=this.renderCB,this.target_=null,t.getMapImpl().addControl(this)}},{key:"renderCB",value:function(t){var e,r,n,i,o=t.frameState;_D(o)||(o.viewState,e=this.scaleContainer_,r=this.facadeMap_,n=this.exactScale,i=e,r.getWMTS().length>0?i.innerHTML=wh.getWMTSScale(r,n):r.getWMTS().length<=0&&!0===n?i.innerHTML=r.getExactScale():r.getWMTS().length<=0&&1==!n&&(i.innerHTML=r.getScale()))}},{key:"destroy",value:function(){NE(FE(o.prototype),"destroy",this).call(this),this.scaleContainer_=null}}])&&ME(e.prototype,r),n&&ME(e,n),o}(pd);function GE(t){return(GE="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function UE(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function BE(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};UE(this,o);var r=new DE(e);return t=i.call(this,r,o.NAME),dD(DE)&&_l(uu("exception").scale_method),t}return e=o,(r=[{key:"createView",value:function(t){return bu(PE.a,{vars:{title:uu("scale").title,scale:uu("scale").scale}})}},{key:"equals",value:function(t){var e=t instanceof o;return e}},{key:"destroy",value:function(){zE(WE(o.prototype),"destroy",this).call(this);var t=this.getPanel();_D(t)||t.removeClassName("m-with-scale")}}])&&BE(e.prototype,r),n&&BE(e,n),o}(yu);XE.NAME="scale";var HE=XE;r(150);function ZE(t){return(ZE="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function KE(t,e){for(var r=0;r=a)break;++g}d=this.scaleBar_?this.createScaleBar(f,h,l):h.toFixed(p<0?-p:0)+" "+l,this.renderedHTML_!=d&&(this.innerElement_.innerHTML=d,this.renderedHTML_=d),this.renderedWidth_!=f&&(this.innerElement_.style.width=f+"px",this.renderedWidth_=f),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)},e.prototype.createScaleBar=function(t,e,r){for(var n="1 : "+Math.round(this.getScaleForResolution()).toLocaleString(),i=[],o=t/this.scaleBarSteps_,a="#ffffff",s=0;s
    '+this.createMarker("relative",s)+(s%2==0||2===this.scaleBarSteps_?this.createStepText(s,t,!1,e,r):"")+""),s===this.scaleBarSteps_-1&&i.push(this.createStepText(s+1,t,!0,e,r)),a="#ffffff"===a?"#000000":"#ffffff";return'
    '+(this.scaleBarText_?'
    '+n+"
    ":"")+i.join("")+"
    "},e.prototype.createMarker=function(t,e){return'
    '},e.prototype.createStepText=function(t,e,r,n,i){var o=(0===t?0:Math.round(n/this.scaleBarSteps_*t*100)/100)+(0===t?"":" "+i);return'
    '+o+"
    "},e.prototype.getScaleForResolution=function(){var t=Object(u.p)(this.viewState_.projection,this.viewState_.resolution,this.viewState_.center,Pn.b.METERS),e=this.dpi_||CO;return parseFloat(t.toString())*(1e3/25.4)*e},e.prototype.render=function(t){var e=t.frameState;this.viewState_=e?e.viewState:null,this.updateElement_()},e}(Ua);function PO(t){return(PO="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function RO(t,e){for(var r=0;r=this.minWidth_)break;f+=1}var p=c.toString().concat(" ").concat(s);this.renderedHTML_!==p&&(this.innerElement_.innerHTML=p,this.renderedHTML_=p),this.renderedWidth_!==h&&(this.innerElement_.style.width=h.toString().concat("px"),this.renderedWidth_=h),this.renderedVisible_||(this.element.style.display="",this.renderedVisible_=!0)}else this.renderedVisible_&&(this.element.style.display="none",this.renderedVisible_=!1)}}])&&RO(e.prototype,r),n&&RO(e,n),o}(TO),VO=r(105),qO=r.n(VO);function YO(t){return(YO="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function WO(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function XO(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};WO(this,o);var r=new zO(e);return t=i.call(this,r,o.NAME),dD(zO)&&_l(uu("exception").scaleline_method),t}return e=o,(r=[{key:"createView",value:function(t){return bu(qO.a)}},{key:"equals",value:function(t){var e=t instanceof o;return e}}])&&XO(e.prototype,r),n&&XO(e,n),o}(yu);$O.NAME="scaleline";var QO=$O,tS=(r(152),r(106)),eS=r.n(tS),rS=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),nS="projection",iS="coordinateFormat",oS=function(t){function e(e){var r=this,n=e||{},i=document.createElement("div");i.className=void 0!==n.className?n.className:"ol-mouse-position",(r=t.call(this,{element:i,render:n.render,target:n.target})||this).on,r.once,r.un,r.addChangeListener(nS,r.handleProjectionChanged_),n.coordinateFormat&&r.setCoordinateFormat(n.coordinateFormat),n.projection&&r.setProjection(n.projection);var o=!0,a=" ";return"undefinedHTML"in n?(void 0!==n.undefinedHTML&&(a=n.undefinedHTML),o=!!a):"placeholder"in n&&(!1===n.placeholder?o=!1:a=String(n.placeholder)),r.placeholder_=a,r.renderOnMouseOut_=o,r.renderedHTML_=i.innerHTML,r.mapProjection_=null,r.transform_=null,r}return rS(e,t),e.prototype.handleProjectionChanged_=function(){this.transform_=null},e.prototype.getCoordinateFormat=function(){return this.get(iS)},e.prototype.getProjection=function(){return this.get(nS)},e.prototype.handleMouseMove=function(t){var e=this.getMap();this.updateHTML_(e.getEventPixel(t))},e.prototype.handleMouseOut=function(t){this.updateHTML_(null)},e.prototype.setMap=function(e){if(t.prototype.setMap.call(this,e),e){var r=e.getViewport();this.listenerKeys.push(Object(Ci.a)(r,Ki,this.handleMouseMove,this)),this.renderOnMouseOut_&&this.listenerKeys.push(Object(Ci.a)(r,Qi,this.handleMouseOut,this)),this.updateHTML_(null)}},e.prototype.setCoordinateFormat=function(t){this.set(iS,t)},e.prototype.setProjection=function(t){this.set(nS,Object(u.o)(t))},e.prototype.updateHTML_=function(t){var e=this.placeholder_;if(t&&this.mapProjection_){if(!this.transform_){var r=this.getProjection();this.transform_=r?Object(u.r)(this.mapProjection_,r):u.t}var n=this.getMap().getCoordinateFromPixelInternal(t);if(n){var i=Object(u.s)();i&&(this.transform_=Object(u.r)(this.mapProjection_,i)),this.transform_(n,n);var o=this.getCoordinateFormat();e=o?o(n):n.toString()}}this.renderedHTML_&&e===this.renderedHTML_||(this.element.innerHTML=e,this.renderedHTML_=e)},e.prototype.render=function(t){var e=t.frameState;e?this.mapProjection_!=e.viewState.projection&&(this.mapProjection_=e.viewState.projection,this.transform_=null):this.mapProjection_=null},e}(Ua);function aS(t){return(aS="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function sS(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};bS(this,o);var n=new _S(e,r);return t=i.call(this,n,o.NAME),dD(_S)&&_l(uu("exception").mouse_method),t}return e=o,(r=[{key:"createView",value:function(t){return bu(eS.a)}},{key:"equals",value:function(t){return t instanceof o}},{key:"destroy",value:function(){wS(IS(o.prototype),"destroy",this).call(this);var t=this.getPanel();_D(t)||t.removeClassName("m-with-mouse")}}])&&xS(e.prototype,r),n&&xS(e,n),o}(yu);CS.NAME="mouse";var TS=CS,PS=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),RS=.75,LS=.1,MS=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return PS(e,t),e.prototype.createRenderer=function(){return new Pi(this)},e}(Da),NS=function(t){function e(e){var r=this,n=e||{};(r=t.call(this,{element:document.createElement("div"),render:n.render,target:n.target})||this).boundHandleRotationChanged_=r.handleRotationChanged_.bind(r),r.collapsed_=void 0===n.collapsed||n.collapsed,r.collapsible_=void 0===n.collapsible||n.collapsible,r.collapsible_||(r.collapsed_=!1),r.rotateWithView_=void 0!==n.rotateWithView&&n.rotateWithView,r.viewExtent_=void 0;var i=void 0!==n.className?n.className:"ol-overviewmap",o=void 0!==n.tipLabel?n.tipLabel:"Overview map",a=void 0!==n.collapseLabel?n.collapseLabel:"‹";"string"==typeof a?(r.collapseLabel_=document.createElement("span"),r.collapseLabel_.textContent=a):r.collapseLabel_=a;var s=void 0!==n.label?n.label:"›";"string"==typeof s?(r.label_=document.createElement("span"),r.label_.textContent=s):r.label_=s;var l=r.collapsible_&&!r.collapsed_?r.collapseLabel_:r.label_,u=document.createElement("button");u.setAttribute("type","button"),u.title=o,u.appendChild(l),u.addEventListener(Di.a.CLICK,r.handleClick_.bind(r),!1),r.ovmapDiv_=document.createElement("div"),r.ovmapDiv_.className="ol-overviewmap-map",r.view_=n.view,r.ovmap_=new MS({view:n.view});var c=r.ovmap_;n.layers&&n.layers.forEach((function(t){c.addLayer(t)}));var h=document.createElement("div");h.className="ol-overviewmap-box",h.style.boxSizing="border-box",r.boxOverlay_=new Qb({position:[0,0],positioning:Bb,element:h}),r.ovmap_.addOverlay(r.boxOverlay_);var f=i+" "+ti.e+" "+ti.b+(r.collapsed_&&r.collapsible_?" "+ti.a:"")+(r.collapsible_?"":" ol-uncollapsible"),p=r.element;p.className=f,p.appendChild(r.ovmapDiv_),p.appendChild(u);var d=r,g=r.boxOverlay_,y=r.boxOverlay_.getElement(),m=function(t){var e,r={clientX:(e=t).clientX,clientY:e.clientY},n=c.getEventCoordinateInternal(r);g.setPosition(n)},_=function t(e){var r=c.getEventCoordinateInternal(e);d.getMap().getView().setCenterInternal(r),window.removeEventListener("mousemove",m),window.removeEventListener("mouseup",t)};return y.addEventListener("mousedown",(function(){window.addEventListener("mousemove",m),window.addEventListener("mouseup",_)})),r}return PS(e,t),e.prototype.setMap=function(e){var r=this.getMap();if(e!==r){if(r){var n=r.getView();n&&this.unbindView_(n),this.ovmap_.setTarget(null)}if(t.prototype.setMap.call(this,e),e){this.ovmap_.setTarget(this.ovmapDiv_),this.listenerKeys.push(Object(Ci.a)(e,Kn.a.PROPERTYCHANGE,this.handleMapPropertyChange_,this));var i=e.getView();i&&(this.bindView_(i),i.isDef()&&(this.ovmap_.updateSize(),this.resetExtent_())),this.ovmap_.isRendered()||this.updateBoxAfterOvmapIsRendered_()}}},e.prototype.handleMapPropertyChange_=function(t){if(t.key===co){var e=t.oldValue;e&&this.unbindView_(e);var r=this.getMap().getView();this.bindView_(r)}else this.ovmap_.isRendered()||t.key!==uo&&t.key!==lo||this.ovmap_.updateSize()},e.prototype.bindView_=function(t){if(!this.view_){var e=new Na({projection:t.getProjection()});this.ovmap_.setView(e)}t.addChangeListener(go.ROTATION,this.boundHandleRotationChanged_),this.handleRotationChanged_()},e.prototype.unbindView_=function(t){t.removeChangeListener(go.ROTATION,this.boundHandleRotationChanged_)},e.prototype.handleRotationChanged_=function(){this.rotateWithView_&&this.ovmap_.getView().setRotation(this.getMap().getView().getRotation())},e.prototype.validateExtent_=function(){var t=this.getMap(),e=this.ovmap_;if(t.isRendered()&&e.isRendered()){var r=t.getSize(),n=t.getView().calculateExtentInternal(r);if(!this.viewExtent_||!Object(mt.p)(n,this.viewExtent_)){this.viewExtent_=n;var i=e.getSize(),o=e.getView().calculateExtentInternal(i),a=e.getPixelFromCoordinateInternal(Object(mt.D)(n)),s=e.getPixelFromCoordinateInternal(Object(mt.w)(n)),l=Math.abs(a[0]-s[0]),u=Math.abs(a[1]-s[1]),c=i[0],h=i[1];lc*RS||u>h*RS?this.resetExtent_():Object(mt.h)(o,n)||this.recenter_()}}},e.prototype.resetExtent_=function(){var t=this.getMap(),e=this.ovmap_,r=t.getSize(),n=t.getView().calculateExtentInternal(r),i=e.getView(),o=Math.log(7.5)/Math.LN2,a=1/(Math.pow(2,o/2)*LS);Object(mt.K)(n,a),i.fitInternal(Ia(n))},e.prototype.recenter_=function(){var t=this.getMap(),e=this.ovmap_,r=t.getView();e.getView().setCenterInternal(r.getCenterInternal())},e.prototype.updateBox_=function(){var t=this.getMap(),e=this.ovmap_;if(t.isRendered()&&e.isRendered()){var r=t.getSize(),n=t.getView(),i=e.getView(),o=this.rotateWithView_?0:-n.getRotation(),a=this.boxOverlay_,s=this.boxOverlay_.getElement(),l=n.getCenterInternal(),u=n.getResolution(),c=i.getResolution(),h=r[0]*u/c,f=r[1]*u/c;if(a.setPosition(l),s){s.style.width=h+"px",s.style.height=f+"px";var p="rotate("+o+"rad)";s.style.transform=p}}},e.prototype.updateBoxAfterOvmapIsRendered_=function(){this.ovmapPostrenderKey_||(this.ovmapPostrenderKey_=Object(Ci.b)(this.ovmap_,ro,(function(t){delete this.ovmapPostrenderKey_,this.updateBox_()}),this))},e.prototype.handleClick_=function(t){t.preventDefault(),this.handleToggle_()},e.prototype.handleToggle_=function(){this.element.classList.toggle(ti.a),this.collapsed_?Object(oi.g)(this.collapseLabel_,this.label_):Object(oi.g)(this.label_,this.collapseLabel_),this.collapsed_=!this.collapsed_;var t=this.ovmap_;if(!this.collapsed_){if(t.isRendered())return this.viewExtent_=void 0,void t.render();t.updateSize(),this.resetExtent_(),this.updateBoxAfterOvmapIsRendered_()}},e.prototype.getCollapsible=function(){return this.collapsible_},e.prototype.setCollapsible=function(t){this.collapsible_!==t&&(this.collapsible_=t,this.element.classList.toggle("ol-uncollapsible"),!t&&this.collapsed_&&this.handleToggle_())},e.prototype.setCollapsed=function(t){this.collapsible_&&this.collapsed_!==t&&this.handleToggle_()},e.prototype.getCollapsed=function(){return this.collapsed_},e.prototype.getRotateWithView=function(){return this.rotateWithView_},e.prototype.setRotateWithView=function(t){this.rotateWithView_!==t&&(this.rotateWithView_=t,0!==this.getMap().getView().getRotation()&&(this.rotateWithView_?this.handleRotationChanged_():this.ovmap_.getView().setRotation(0),this.viewExtent_=void 0,this.validateExtent_(),this.updateBox_()))},e.prototype.getOverviewMap=function(){return this.ovmap_},e.prototype.render=function(t){this.validateExtent_(),this.updateBox_()},e}(Ua);function AS(t){return(AS="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function kS(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function jS(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return kS(this,o),(e=i.call(this,GD({layers:[]},r,!0))).toggleDelay_=0,_D(t.toggleDelay)||(e.toggleDelay_=t.toggleDelay),e.collapsedButtonClass_="g-cartografia-mundo",_D(t.collapsedButtonClass)||(e.collapsedButtonClass_=t.collapsedButtonClass),e.openedButtonClass_="g-cartografia-flecha-derecha2",_D(t.openedButtonClass)||(e.openedButtonClass_=t.openedButtonClass),e.facadeMap_=null,e}return e=o,(r=[{key:"addTo",value:function(t,e){this.facadeMap_=t,this.update(t,e),this.getCollapsed()||this.addLayers(this.facadeMap_)}},{key:"update",value:function(t,e){var r=this.element.querySelector("button");!0===this.collapsed_?r.classList.contains(this.collapsedButtonClass_)?r.classList.remove(this.collapsedButtonClass_):r.classList.add(this.collapsedButtonClass_):r.classList.contains(this.openedButtonClass_)?r.classList.remove(this.openedButtonClass_):r.classList.add(this.openedButtonClass_),this.addOpenEventListener(r,t),this.setTarget()}},{key:"addOpenEventListener",value:function(t,e){t.onclick=this.openEventListener.bind(this)}},{key:"openEventListener",value:function(t){var e=t;!0===this.getCollapsed()&&(this.addLayers(this.facadeMap_),e.target.onclick=null)}},{key:"setTarget",value:function(){var t=this.facadeControl_;if(!_D(t)){var e=t.getPanel();_D(e)||(this.target_=e.getControlsContainer())}}},{key:"getElement",value:function(){return this.element}},{key:"addLayer_",value:function(t){t.un(Cl,this.addLayer_,this),this.getOverviewMap().addLayer(t.getOLLayer())}},{key:"addLayers",value:function(t){var e=this,r=[];t.getLayers().forEach((function(t){if((t.type===Nu||!1===t.transparent)&&t.isVisible()){var n=null,i=t.getImpl().getOLLayer().getProperties();delete i.map,n=!0===t.tiled?new Mc.a(i):new Nc.a(i),_D(n)?t.getImpl().on(Cl,e.addLayer_.bind(e)):r.push(n)}}));var n=new Bp({projection:Object(u.o)(t.getProjection().code),resolutions:t.getResolutions()});t.getMapImpl().addControl(this),this.ovmap_.setView(n),r.forEach((function(t){return e.ovmap_.addLayer(t)})),this.wasOpen_=!0}},{key:"handleToggle_",value:function(){var t=this;tG(this.element,"ol-collapsed");var e=this.element.querySelector("button");tG(e,this.openedButtonClass_),tG(e,this.collapsedButtonClass_),setTimeout((function(){t.collapsed_?eG(t.collapseLabel_,t.label_):eG(t.label_,t.collapseLabel_),t.collapsed_=!t.collapsed_;var e=t.ovmap_;t.collapsed_||e.isRendered()||(e.updateSize(),t.resetExtent_(),e.addEventListener("postrender",(function(e){t.updateBox_()})))}),this.toggleDelay_)}},{key:"destroy",value:function(){this.facadeMap_.getMapImpl().removeControl(this),this.facadeMap_=null}},{key:"facadeControl",set:function(t){this.facadeControl_=t},get:function(){return this.facadeControl_}}])&&jS(e.prototype,r),n&&jS(e,n),o}(NS),zS=r(107),VS=r.n(zS);function qS(t){return(qS="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function YS(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function WS(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};YS(this,o);var n=new BS(e,r);return t=i.call(this,n,o.NAME),dD(BS)&&_l(uu("exception").overviewmap_method),n.facadeControl=KS(t),t}return e=o,(r=[{key:"createView",value:function(t){return bu(VS.a)}},{key:"equals",value:function(t){var e=t instanceof o;return e}}])&&WS(e.prototype,r),n&&WS(e,n),o}(yu);$S.NAME="overviewmap";var QS=$S;function tI(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};wI(this,o);var r=new bI(e);return t=i.call(this,r,o.NAME),dD(bI)&&_l(uu("exception").panzoom_method),t}return e=o,(r=[{key:"createView",value:function(t){return bu(pI.a)}},{key:"equals",value:function(t){var e=t instanceof o;return e}}])&&EI(e.prototype,r),n&&EI(e,n),o}(yu);TI.NAME="panzoom";var PI=TI,RI=(r(154),function(){function t(){this.dataProjection=void 0,this.defaultFeatureProjection=void 0,this.supportedMediaTypes=null}return t.prototype.getReadOptions=function(t,e){var r;if(e){var n=e.dataProjection?Object(u.o)(e.dataProjection):this.readProjection(t);e.extent&&n&&n.getUnits()===Pn.b.TILE_PIXELS&&(n=Object(u.o)(n)).setWorldExtent(e.extent),r={dataProjection:n,featureProjection:e.featureProjection}}return this.adaptOptions(r)},t.prototype.adaptOptions=function(t){return Object(ii.a)({dataProjection:this.dataProjection,featureProjection:this.defaultFeatureProjection},t)},t.prototype.getType=function(){return Object(Gn.b)()},t.prototype.readFeature=function(t,e){return Object(Gn.b)()},t.prototype.readFeatures=function(t,e){return Object(Gn.b)()},t.prototype.readGeometry=function(t,e){return Object(Gn.b)()},t.prototype.readProjection=function(t){return Object(Gn.b)()},t.prototype.writeFeature=function(t,e){return Object(Gn.b)()},t.prototype.writeFeatures=function(t,e){return Object(Gn.b)()},t.prototype.writeGeometry=function(t,e){return Object(Gn.b)()},t}());function LI(t,e,r){var n,i=r?Object(u.o)(r.featureProjection):null,o=r?Object(u.o)(r.dataProjection):null;if(n=i&&o&&!Object(u.j)(i,o)?(e?t.clone():t).transform(e?i:o,e?o:i):t,e&&r&&void 0!==r.decimals){var a=Math.pow(10,r.decimals);n===t&&(n=t.clone()),n.applyTransform((function(t){for(var e=0,r=t.length;e0?r[0]:null},e.prototype.readFeatureFromNode=function(t,e){return null},e.prototype.readFeatures=function(t,e){if(t){if("string"==typeof t){var r=m(t);return this.readFeaturesFromDocument(r,e)}return y(t)?this.readFeaturesFromDocument(t,e):this.readFeaturesFromNode(t,e)}return[]},e.prototype.readFeaturesFromDocument=function(t,e){for(var r=[],n=t.firstChild;n;n=n.nextSibling)n.nodeType==Node.ELEMENT_NODE&&Object(h.c)(r,this.readFeaturesFromNode(n,e));return r},e.prototype.readFeaturesFromNode=function(t,e){return Object(Gn.b)()},e.prototype.readGeometry=function(t,e){if(t){if("string"==typeof t){var r=m(t);return this.readGeometryFromDocument(r,e)}return y(t)?this.readGeometryFromDocument(t,e):this.readGeometryFromNode(t,e)}return null},e.prototype.readGeometryFromDocument=function(t,e){return null},e.prototype.readGeometryFromNode=function(t,e){return null},e.prototype.readProjection=function(t){if(t){if("string"==typeof t){var e=m(t);return this.readProjectionFromDocument(e)}return y(t)?this.readProjectionFromDocument(t):this.readProjectionFromNode(t)}return null},e.prototype.readProjectionFromDocument=function(t){return this.dataProjection},e.prototype.readProjectionFromNode=function(t){return this.dataProjection},e.prototype.writeFeature=function(t,e){var r=this.writeFeatureNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeFeatureNode=function(t,e){return null},e.prototype.writeFeatures=function(t,e){var r=this.writeFeaturesNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeFeaturesNode=function(t,e){return null},e.prototype.writeGeometry=function(t,e){var r=this.writeGeometryNode(t,e);return this.xmlSerializer_.serializeToString(r)},e.prototype.writeGeometryNode=function(t,e){return null},e}(RI),kI=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),jI="http://www.opengis.net/gml",FI=/^[\s\xa0]*$/,DI=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.featureType=n.featureType,r.featureNS=n.featureNS,r.srsName=n.srsName,r.schemaLocation="",r.FEATURE_COLLECTION_PARSERS={},r.FEATURE_COLLECTION_PARSERS[r.namespace]={featureMember:v(r.readFeaturesInternal),featureMembers:b(r.readFeaturesInternal)},r.supportedMediaTypes=["application/gml+xml"],r}return kI(e,t),e.prototype.readFeaturesInternal=function(t,e){var r=t.localName,n=null;if("FeatureCollection"==r)n=R([],this.FEATURE_COLLECTION_PARSERS,t,e,this);else if("featureMembers"==r||"featureMember"==r||"member"==r){var i=e[0],o=i.featureType,a=i.featureNS;if(!o&&t.childNodes){o=[],a={};for(var s=0,l=t.childNodes.length;s0){i[s]={_content_:i[s]};for(var u=0;u=2,57),n}return $I(e,t),e}(JI),tC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),eC=function(t){function e(e){return t.call(this,"And",Array.prototype.slice.call(arguments))||this}return tC(e,t),e}(QI),rC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),nC=function(t){function e(e,r,n){var i=t.call(this,"BBOX")||this;if(i.geometryName=e,i.extent=r,4!==r.length)throw new Error("Expected an extent with four values ([minX, minY, maxX, maxY])");return i.srsName=n,i}return rC(e,t),e}(JI),iC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),oC=function(t){function e(e,r,n,i){var o=t.call(this,e)||this;return o.geometryName=r||"the_geom",o.geometry=n,o.srsName=i,o}return iC(e,t),e}(JI),aC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),sC=function(t){function e(e,r,n){return t.call(this,"Contains",e,r,n)||this}return aC(e,t),e}(oC),lC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),uC=function(t){function e(e,r,n,i,o){var a=t.call(this,"DWithin",e,r,o)||this;return a.distance=n,a.unit=i,a}return lC(e,t),e}(oC),cC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),hC=function(t){function e(e,r,n){return t.call(this,"Disjoint",e,r,n)||this}return cC(e,t),e}(oC),fC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),pC=function(t){function e(e,r){var n=t.call(this,e)||this;return n.propertyName=r,n}return fC(e,t),e}(JI),dC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),gC=function(t){function e(e,r,n){var i=t.call(this,"During",e)||this;return i.begin=r,i.end=n,i}return dC(e,t),e}(pC),yC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),mC=function(t){function e(e,r,n,i){var o=t.call(this,e,r)||this;return o.expression=n,o.matchCase=i,o}return yC(e,t),e}(pC),_C=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),vC=function(t){function e(e,r,n){return t.call(this,"PropertyIsEqualTo",e,r,n)||this}return _C(e,t),e}(mC),bC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xC=function(t){function e(e,r){return t.call(this,"PropertyIsGreaterThan",e,r)||this}return bC(e,t),e}(mC),wC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),EC=function(t){function e(e,r){return t.call(this,"PropertyIsGreaterThanOrEqualTo",e,r)||this}return wC(e,t),e}(mC),OC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),SC=function(t){function e(e,r,n){return t.call(this,"Intersects",e,r,n)||this}return OC(e,t),e}(oC),IC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),CC=function(t){function e(e,r,n){var i=t.call(this,"PropertyIsBetween",e)||this;return i.lowerBoundary=r,i.upperBoundary=n,i}return IC(e,t),e}(pC),TC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),PC=function(t){function e(e,r,n,i,o,a){var s=t.call(this,"PropertyIsLike",e)||this;return s.pattern=r,s.wildCard=void 0!==n?n:"*",s.singleChar=void 0!==i?i:".",s.escapeChar=void 0!==o?o:"!",s.matchCase=a,s}return TC(e,t),e}(pC),RC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),LC=function(t){function e(e){return t.call(this,"PropertyIsNull",e)||this}return RC(e,t),e}(pC),MC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),NC=function(t){function e(e,r){return t.call(this,"PropertyIsLessThan",e,r)||this}return MC(e,t),e}(mC),AC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),kC=function(t){function e(e,r){return t.call(this,"PropertyIsLessThanOrEqualTo",e,r)||this}return AC(e,t),e}(mC),jC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),FC=function(t){function e(e){var r=t.call(this,"Not")||this;return r.condition=e,r}return jC(e,t),e}(JI),DC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),GC=function(t){function e(e,r,n){return t.call(this,"PropertyIsNotEqualTo",e,r,n)||this}return DC(e,t),e}(mC),UC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),BC=function(t){function e(e){return t.call(this,"Or",Array.prototype.slice.call(arguments))||this}return UC(e,t),e}(QI),zC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),VC=(function(t){function e(e){var r=t.call(this,"ResourceId")||this;return r.rid=e,r}zC(e,t)}(JI),function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}()),qC=function(t){function e(e,r,n){return t.call(this,"Within",e,r,n)||this}return VC(e,t),e}(oC);function YC(t){var e=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(eC,e))}function WC(t,e,r){return new nC(t,e,r)}var XC=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),HC={"http://www.opengis.net/gml":{boundedBy:w(GI.prototype.readExtentElement,"bounds")},"http://www.opengis.net/wfs/2.0":{member:v(GI.prototype.readFeaturesInternal)}},ZC={"http://www.opengis.net/wfs":{totalInserted:w(Y),totalUpdated:w(Y),totalDeleted:w(Y)},"http://www.opengis.net/wfs/2.0":{totalInserted:w(Y),totalUpdated:w(Y),totalDeleted:w(Y)}},KC={"http://www.opengis.net/wfs":{TransactionSummary:w(lT,"transactionSummary"),InsertResults:w(fT,"insertIds")},"http://www.opengis.net/wfs/2.0":{TransactionSummary:w(lT,"transactionSummary"),InsertResults:w(fT,"insertIds")}},JC={"http://www.opengis.net/wfs":{PropertyName:E(J)},"http://www.opengis.net/wfs/2.0":{PropertyName:E(J)}},$C={"http://www.opengis.net/wfs":{Insert:E(pT),Update:E(mT),Delete:E(yT),Property:E(_T),Native:E(vT)},"http://www.opengis.net/wfs/2.0":{Insert:E(pT),Update:E(mT),Delete:E(yT),Property:E(_T),Native:E(vT)}},QC="feature",tT="http://www.w3.org/2000/xmlns/",eT={"2.0.0":"http://www.opengis.net/ogc/1.1","1.1.0":"http://www.opengis.net/ogc","1.0.0":"http://www.opengis.net/ogc"},rT={"2.0.0":"http://www.opengis.net/wfs/2.0","1.1.0":"http://www.opengis.net/wfs","1.0.0":"http://www.opengis.net/wfs"},nT={"2.0.0":"http://www.opengis.net/fes/2.0","1.1.0":"http://www.opengis.net/fes","1.0.0":"http://www.opengis.net/fes"},iT={"2.0.0":"http://www.opengis.net/wfs/2.0 http://schemas.opengis.net/wfs/2.0/wfs.xsd","1.1.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd","1.0.0":"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/wfs.xsd"},oT={"2.0.0":KI,"1.1.0":XI,"1.0.0":VI},aT=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.version_=n.version?n.version:"1.1.0",r.featureType_=n.featureType,r.featureNS_=n.featureNS,r.gmlFormat_=n.gmlFormat?n.gmlFormat:new oT[r.version_],r.schemaLocation_=n.schemaLocation?n.schemaLocation:iT[r.version_],r}return XC(e,t),e.prototype.getFeatureType=function(){return this.featureType_},e.prototype.setFeatureType=function(t){this.featureType_=t},e.prototype.readFeaturesFromNode=function(t,e){var r={node:t};Object(ii.a)(r,{featureType:this.featureType_,featureNS:this.featureNS_}),Object(ii.a)(r,this.getReadOptions(t,e||{}));var n=[r],i=R([],"2.0.0"===this.version_?HC:this.gmlFormat_.FEATURE_COLLECTION_PARSERS,t,n,this.gmlFormat_);return i||(i=[]),i},e.prototype.readTransactionResponse=function(t){if(t){if("string"==typeof t){var e=m(t);return this.readTransactionResponseFromDocument(e)}return y(t)?this.readTransactionResponseFromDocument(t):this.readTransactionResponseFromNode(t)}},e.prototype.readFeatureCollectionMetadata=function(t){if(t){if("string"==typeof t){var e=m(t);return this.readFeatureCollectionMetadataFromDocument(e)}return y(t)?this.readFeatureCollectionMetadataFromDocument(t):this.readFeatureCollectionMetadataFromNode(t)}},e.prototype.readFeatureCollectionMetadataFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readFeatureCollectionMetadataFromNode(e)},e.prototype.readFeatureCollectionMetadataFromNode=function(t){var e={},r=W(t.getAttribute("numberOfFeatures"));return e.numberOfFeatures=r,R(e,HC,t,[],this.gmlFormat_)},e.prototype.readTransactionResponseFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readTransactionResponseFromNode(e)},e.prototype.readTransactionResponseFromNode=function(t){return R({},KC,t,[])},e.prototype.writeGetFeature=function(t){var e=this,r=p(rT[this.version_],"GetFeature");r.setAttribute("service","WFS"),r.setAttribute("version",this.version_),t.handle&&r.setAttribute("handle",t.handle),t.outputFormat&&r.setAttribute("outputFormat",t.outputFormat),void 0!==t.maxFeatures&&r.setAttribute("maxFeatures",String(t.maxFeatures)),t.resultType&&r.setAttribute("resultType",t.resultType),void 0!==t.startIndex&&r.setAttribute("startIndex",String(t.startIndex)),void 0!==t.count&&r.setAttribute("count",String(t.count)),void 0!==t.viewParams&&r.setAttribute("viewParams",t.viewParams),r.setAttributeNS(f,"xsi:schemaLocation",this.schemaLocation_);var n={node:r};if(Object(ii.a)(n,{version:this.version_,srsName:t.srsName,featureNS:t.featureNS?t.featureNS:this.featureNS_,featurePrefix:t.featurePrefix,propertyNames:t.propertyNames?t.propertyNames:[]}),Object(Ui.a)(Array.isArray(t.featureTypes),11),"string"==typeof t.featureTypes[0]){var i=t.filter;t.bbox&&(Object(Ui.a)(t.geometryName,12),i=this.combineBboxAndFilter(t.geometryName,t.bbox,t.srsName,i)),Object(ii.a)(n,{geometryName:t.geometryName,filter:i}),FT(r,t.featureTypes,[n])}else t.featureTypes.forEach((function(i){var o=e.combineBboxAndFilter(i.geometryName,i.bbox,t.srsName,t.filter);Object(ii.a)(n,{geometryName:i.geometryName,filter:o}),FT(r,[i.name],[n])}));return r},e.prototype.combineBboxAndFilter=function(t,e,r,n){var i=WC(t,e,r);return n?YC(n,i):i},e.prototype.writeTransaction=function(t,e,r,n){var i,o=[],a=n.version?n.version:this.version_,s=p(rT[a],"Transaction");s.setAttribute("service","WFS"),s.setAttribute("version",a),n&&(i=n.gmlOptions?n.gmlOptions:{},n.handle&&s.setAttribute("handle",n.handle)),s.setAttributeNS(f,"xsi:schemaLocation",iT[a]);var l=function(t,e,r,n){var i,o=n.featurePrefix?n.featurePrefix:QC;"1.0.0"===r?i=2:"1.1.0"===r?i=3:"2.0.0"===r&&(i=3.2);return Object(ii.a)({node:t},{version:r,featureNS:n.featureNS,featureType:n.featureType,featurePrefix:o,gmlVersion:i,hasZ:n.hasZ,srsName:n.srsName},e)}(s,i,a,n);return t&&sT("Insert",t,o,l),e&&sT("Update",e,o,l),r&&sT("Delete",r,o,l),n.nativeElements&&sT("Native",n.nativeElements,o,l),s},e.prototype.readProjectionFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE)return this.readProjectionFromNode(e);return null},e.prototype.readProjectionFromNode=function(t){if(t.firstElementChild&&t.firstElementChild.firstElementChild)for(var e=(t=t.firstElementChild.firstElementChild).firstElementChild;e;e=e.nextElementSibling)if(0!==e.childNodes.length&&(1!==e.childNodes.length||3!==e.firstChild.nodeType)){var r=[{}];return this.gmlFormat_.readGeometryElement(e,r),Object(u.o)(r.pop().srsName)}return null},e}(AI);function sT(t,e,r,n){N(n,$C,S(t),e,r)}function lT(t,e){return R({},ZC,t,e)}var uT={"http://www.opengis.net/ogc":{FeatureId:v((function(t,e){return t.getAttribute("fid")}))},"http://www.opengis.net/ogc/1.1":{FeatureId:v((function(t,e){return t.getAttribute("fid")}))}};function cT(t,e){P(uT,t,e)}var hT={"http://www.opengis.net/wfs":{Feature:cT},"http://www.opengis.net/wfs/2.0":{Feature:cT}};function fT(t,e){return R([],hT,t,e)}function pT(t,e,r){var n=r[r.length-1],i=n.featureType,o=n.featureNS,a=n.gmlVersion,s=p(o,i);t.appendChild(s),2===a?VI.prototype.writeFeatureElement(s,e,r):3===a?XI.prototype.writeFeatureElement(s,e,r):KI.prototype.writeFeatureElement(s,e,r)}function dT(t,e,r){var n=r[r.length-1].version,i=eT[n],o=p(i,"Filter"),a=p(i,"FeatureId");o.appendChild(a),a.setAttribute("fid",e),t.appendChild(o)}function gT(t,e){var r=(t=t||QC)+":";return 0===e.indexOf(r)?e:r+e}function yT(t,e,r){var n=r[r.length-1];Object(Ui.a)(void 0!==e.getId(),26);var i=n.featureType,o=n.featurePrefix,a=n.featureNS,s=gT(o,i);t.setAttribute("typeName",s),t.setAttributeNS(tT,"xmlns:"+o,a);var l=e.getId();void 0!==l&&dT(t,l,r)}function mT(t,e,r){var n=r[r.length-1];Object(Ui.a)(void 0!==e.getId(),27);var i=n.version,o=n.featureType,a=n.featurePrefix,s=n.featureNS,l=gT(a,o),u=e.getGeometryName();t.setAttribute("typeName",l),t.setAttributeNS(tT,"xmlns:"+a,s);var c=e.getId();if(void 0!==c){for(var h=e.getKeys(),f=[],p=0,d=h.length;pt.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&!/WMS\s+server\s+error/i.test(t)&&(r=!0);break;case"application/vnd.ogc.gml":r=(new GT).readFeatures(t).length>0;break;case"text/plain":/returned\s+no\s+results/i.test(t)||/features\s+were\s+found/i.test(t)||/:$/i.test(t)||(r=!0)}return r}},{key:"unsupportedFormat",value:function(t,e){var r=!1;return"text/html"===e&&(r=a.regExs.msUnsupportedFormat.test(t)),r}}],(r=[{key:"addTo",value:function(t,e){!1===t.getMapImpl().getControls().getArray().some((function(t){return t instanceof a}))&&(this.facadeMap_=t,Ua.call(this,{element:e,target:null}),t.getMapImpl().addControl(this))}},{key:"activate",value:function(){this.addOnClickEvent_()}},{key:"deactivate",value:function(){this.deleteOnClickEvent_()}},{key:"addOnClickEvent_",value:function(){var t=this,e=this.facadeMap_.getMapImpl();"plain"===OD(this.userFormat)||"text/plain"===OD(this.userFormat)?this.userFormat="text/plain":"gml"===OD(this.userFormat)||"application/vnd.ogc.gml"===OD(this.userFormat)?this.userFormat="application/vnd.ogc.gml":this.userFormat="text/html",this.clickEventKey_=e.on("singleclick",(function(e){return t.buildUrl_(o,e)}))}},{key:"buildUrl_",value:function(t,e){this.evt=e;var r=this.facadeMap_.getMapImpl(),n=this.buildWMSInfoURL(this.facadeMap_.getWMS()),i=this.buildWMTSInfoURL(this.facadeMap_.getWMTS()),o=[].concat(YT(i),YT(n)).filter((function(t){return!_D(t)}));o.length>0?this.showInfoFromURL_(o,e.coordinate,r):t.info("No existen capas consultables")}},{key:"buildWMSInfoURL",value:function(t){var e=this,r=this.facadeMap_.getMapImpl().getView().getResolution(),n=this.facadeMap_.getProjection().code;return t.map((function(t){var i,o=t.getImpl().getOLLayer();if(t.isVisible()&&t.isQueryable()&&!_D(o)){i={};var a={INFO_FORMAT:e.userFormat,FEATURE_COUNT:e.featureCount},s=o.getSource(),l=e.evt.coordinate,u=s.getFeatureInfoUrl(l,r,n,a);xD(M.config.ticket)&&(u=ID(u,{ticket:M.config.ticket})),/buffer/i.test(t.url)||(a.Buffer=e.buffer),i={layer:t.legend||t.name,url:u}}return i}))}},{key:"buildWMTSInfoURL",value:function(t){var e=this;return t.map((function(t){var r;if(t.isVisible()){r={};var n=e.userFormat,i=e.evt.coordinate,o=t.getGetFeatureInfoUrl(i,e.facadeMap_.getZoom(),n);xD(M.config.ticket)&&(o=ID(o,{ticket:M.config.ticket})),r={layer:t.legend||t.name,url:o}}return r}))}},{key:"deleteOnClickEvent_",value:function(){Object(ag.b)(this.clickEventKey_)}},{key:"formatInfo",value:function(t,e,r){var n=null;switch(e){case"text/html":n=t;break;case"application/vnd.ogc.gml":var i=(new GT).readFeatures(t);n="",i.forEach((function(t){var e=t.getKeys();n+="
    ",n+="'");for(var i=0,o=e.length;i"}n+="
    ' ".concat(kD(r)," '
    ',n+=kD(a),n+='',n+=s,n+="
    "}));break;case"text/plain":n=a.regExs.gsResponse.test(t)?this.txtToHtmlGeoserver(t,r):this.txtToHtmlMapserver(t,r)}return n}},{key:"txtToHtmlGeoserver",value:function(t,e){var r=t,n=(r=(r=r.replace(/[\w\s\S]*':/i,"")).replace(/---(-*)(n+)---(-*)/g,"#newfeature#")).split("\n"),i="
    ";i+="");for(var o=0,s=n.length;o1&&(0!==(h=u[1].trim()).length&&"null"!==h||(h="-")),!1===a.regExs.gsGeometry.test(c)&&(i+='")}else a.regExs.gsNewFeature.test(l)&&(i+='"))}return i+="
    ".concat(kD(e),"
    ',i+=kD(c),i+='',i+=h,i+="
    '.concat(kD(e),"
    "}},{key:"txtToHtmlMapserver",value:function(t){for(var e=t,r=(e=e.replace(/[\w\s\S]*(layer)/i,"$1")).replace(/layer(\s*)'(\w+)'[\w\s\S]*/i,"$2"),n=(e=(e=(e=(e=e.replace(/layer(\s*)'(\w+)'([\w\s\S]*)/i,"$3")).replace(/feature(\s*)(\w*)(\s*)(:)([\w\s\S]*)/i,"$5")).replace(/'/g,"")).replace(/=/g,";")).split("\n"),i="",o=""),s=0,l=n.length;s1&&0===(p=h[1].trim()).length&&(p="-"),f.length>0&&(a.regExs.msNewFeature.test(f)?c.length>0&&!a.regExs.msNewFeature.test(c)&&(i+="")):(i+='"))}return i.length>0&&(i="".concat(o+i,"
    ".concat(kD(r),"
    ".concat(kD(r),"
    ',i+=kD(f),i+='',i+=p,i+="
    ")),i}},{key:"showInfoFromURL_",value:function(t,e,r){var n=this,i=bu(BT.a,{vars:{info:a.LOADING_MESSAGE},parseToHtml:!1}),o=[],s=String(this.userFormat),l=0,u={icon:"g-cartografia-info",title:a.POPUP_TITLE,content:i},c=this.facadeMap_.getPopup();_D(c)?((c=new Ox).addTab(u),this.facadeMap_.addPopup(c,e)):c.getTabs().some((function(t){return t.title!==a.POPUP_TITLE}))?c.addTab(u):(this.facadeMap_.removePopup(),(c=new Ox).addTab(u),this.facadeMap_.addPopup(c,e)),t.forEach((function(e){var r=e.url,i=e.layer;uD(r).then((function(e){if(c=n.facadeMap_.getPopup(),200===e.code&&!1===e.error){var r=e.text;if(!0===a.insert(r,s)){var h=n.formatInfo(r,s,i);o.push({formatedInfo:h,layerName:i})}else a.unsupportedFormat(r,s)&&o.push({formatedInfo:uu("getfeatureinfo").unsupported_format,layerName:i})}if(l+=1,t.length===l&&!_D(c))if(c.removeTab(u),0===o.length)c.addTab({icon:"g-cartografia-info",title:a.POPUP_TITLE,content:uu("getfeatureinfo").no_info});else{var f=bu(VT.a,{vars:{layers:o,info_of:uu("getfeatureinfo").info_of},parseToHtml:!1});c.addTab({icon:"g-cartografia-info",title:a.POPUP_TITLE,content:f,listeners:[{selector:".m-getfeatureinfo-content-info div.m-arrow-right",all:!0,type:"click",callback:function(t){return n.toogleSection(t)}}]})}}))})),this.popup_=c}},{key:"toogleSection",value:function(t){var e=t.target,r=e.parentElement.parentElement.querySelector(".m-getfeatureinfo-content-info-body");if(r.classList.contains("m-content-collapsed")){r.classList.remove("m-content-collapsed"),e.classList.remove("m-arrow-right"),e.classList.add("m-arrow-down");var n=this.popup_.getCoordinate();_D(this.popup_.getImpl().panIntoView)||this.popup_.getImpl().panIntoView(n)}else r.classList.add("m-content-collapsed"),e.classList.add("m-arrow-right"),e.classList.remove("m-arrow-down")}}])&&XT(e.prototype,r),n&&XT(e,n),a}(pd);$T.LOADING_MESSAGE="Obteniendo información...",$T.regExs={gsResponse:/^results[\w\s\S]*'http:/i,msNewFeature:/feature(\s*)(\w+)(\s*):/i,gsNewFeature:/#newfeature#/,gsGeometry:/geom$/i,msGeometry:/boundedby$/i,msUnsupportedFormat:/error(.*)unsupported(.*)info_format/i};var QT=$T,tP=r(112),eP=r.n(tP);function rP(t){return(rP="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function nP(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function iP(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{};nP(this,o);var n=new QT(t,r);return e=i.call(this,n,o.NAME),dD(QT)&&_l(uu("exception").getfeatureinfo_method),e.format=t,e}return e=o,(r=[{key:"createView",value:function(t){return bu(eP.a,{vars:{title:uu("getfeatureinfo").title}})}},{key:"getActivationButton",value:function(t){return t.querySelector("button#m-getfeatureinfo-button")}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.name===t.name),e}}])&&iP(e.prototype,r),n&&iP(e,n),o}(yu);uP.NAME="getfeatureinfo",uP.POPUP_TITLE=uu("getfeatureinfo").info;var cP=uP,hP=(r(156),r(113)),fP=r.n(hP),pP=".m-top.m-left",dP=".m-top.m-right",gP=".m-bottom.m-left",yP=".m-bottom.m-right";function mP(t){return(mP="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _P(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function vP(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return _P(this,o),(e=i.call(this)).name=t,e._map=null,e._controls=[],e._buttonPanel=null,e._collapsible=!1,_D(r.collapsible)||(e._collapsible=r.collapsible),e.position=pP,_D(r.position)||(e.position=r.position),e._collapsed=e._collapsible,_D(r.collapsed)||(e._collapsed=r.collapsed&&!0===e._collapsible),e._multiActivation=!1,_D(r.multiActivation)||(e._multiActivation=r.multiActivation),e._className=null,_D(r.className)||(e._className=r.className),e._collapsedButtonClass=null,_D(r.collapsedButtonClass)?e.position===pP||e.position===gP?e._collapsedButtonClass="g-cartografia-flecha-derecha":e.position!==dP&&e.position!==yP||(e._collapsedButtonClass="g-cartografia-flecha-izquierda"):e._collapsedButtonClass=r.collapsedButtonClass,e._openedButtonClass=null,_D(r.openedButtonClass)?e.position===pP||e.position===gP?e._openedButtonClass="g-cartografia-flecha-izquierda":e.position!==dP&&e.position!==yP||(e._openedButtonClass="g-cartografia-flecha-derecha"):e._openedButtonClass=r.openedButtonClass,e._element=null,e._areaContainer=null,e._controlsContainer=null,e._tooltip=null,_D(r.tooltip)||(e._tooltip=r.tooltip),e}return e=o,(r=[{key:"destroy",value:function(){null!=this._element&&this._areaContainer.removeChild(this._element),this._controlsContainer=null}},{key:"addTo",value:function(t,e){var r=this;this._map=t,this._areaContainer=e;var n=bu(fP.a);this._element=n,_D(this._tooltip)||this._element.setAttribute("title",this._tooltip),this._buttonPanel=n.querySelector("button.m-panel-btn"),_D(this._className)||this._className.split(/\s+/).forEach((function(t){n.classList.add(t)})),!0===this._collapsed?this.collapse():this.open(),!0!==this._collapsible&&n.classList.add("no-collapsible"),this._controlsContainer=n.querySelector("div.m-panel-controls"),e.appendChild(n),this._buttonPanel.addEventListener("click",(function(t){t.preventDefault(),!1===r._collapsed?r.collapse():r.open()})),this.addControls(this._controls),this.fire(Cl,n)}},{key:"_collapse",value:function(t){t.classList.remove("opened"),this._buttonPanel.classList.remove(this._openedButtonClass),t.classList.add("collapsed"),this._buttonPanel.classList.add(this._collapsedButtonClass),this._collapsed=!0,this.fire(Bl)}},{key:"_open",value:function(t){t.classList.remove("collapsed"),this._buttonPanel.classList.remove(this._collapsedButtonClass),t.classList.add("opened"),this._buttonPanel.classList.add(this._openedButtonClass),this._collapsed=!1,this.fire(Ul)}},{key:"open",value:function(){this._open(this._element)}},{key:"collapse",value:function(){this._collapse(this._element)}},{key:"getControls",value:function(){return this._controls}},{key:"addControls",value:function(t){var e=this,r=t;_D(r)||(mD(r)||(r=[r]),r.forEach((function(t){t instanceof yu&&(e.hasControl(t)||(e._controls.push(t),t.setPanel(e),t.on(zl,e._removeControl.bind(e),e)),_D(e._controlsContainer)||(t.on(Cl,e._moveControlView.bind(e),e),t.addTo(e._map)),t.on(Dl,e._manageActivation.bind(e),e))})))}},{key:"hasControl",value:function(t){var e=!1;return _D(t)||(xD(t)?e=null!=this._controls.filter((function(e){return e.name===t}))[0]:t instanceof yu&&(e=DD(this._controls,t))),e}},{key:"removeControls",value:function(t){var e=this,r=t;_D(r)||(mD(r)||(r=[r]),r.forEach((function(t){var r=t;r instanceof yu&&e.hasControl(r)&&(e._controls=e._controls.filter((function(t){return!r.equals(t)})),r.destroy&&r.destroy(),r.setPanel(null))}),this),0===this._controls.length&&this._map.removePanel(this))}},{key:"_removeControl",value:function(t){var e=this;this._map.controls(t).forEach((function(t){var r=e._controls.indexOf(t);-1!==r&&e._controls.splice(r,1)}))}},{key:"removeClassName",value:function(t){_D(this._element)?this._className=this._className.replace(new RegExp("s* ".concat(t," s*")),""):this._element.classList.remove(t)}},{key:"addClassName",value:function(t){_D(this._element)?this._className=this._className.concat(" ").concat(t):this._element.classList.add(t)}},{key:"_moveControlView",value:function(t){var e=t.getElement();_D(this._controlsContainer)||this._controlsContainer.appendChild(e),t.fire(Tl)}},{key:"_manageActivation",value:function(t){!0!==this._multiActivation&&this._controls.forEach((function(e){!e.equals(t)&&e.activated&&e.deactivate()}))}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=t.name===this.name),e}},{key:"getTemplatePanel",value:function(){return this._element}},{key:"getButtonPanel",value:function(){return this._buttonPanel}},{key:"isCollapsed",value:function(){return this._collapsed}},{key:"setCollapsed",value:function(t){this._collapsed=t}},{key:"getControlsContainer",value:function(){return this._controlsContainer}}])&&vP(e.prototype,r),n&&vP(e,n),o}(il);function SP(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function IP(t){for(var e=1;e0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){return null};TP(this,t),this.panel_=new OP(e.name,IP({},e.params)),r(this.panel_)}var e,r,n;return e=t,(r=[{key:"panel",get:function(){return this.panel_}}])&&PP(e.prototype,r),n&&PP(e,n),t}(),NP=function(t){var e=t.getPanels("map-info")[0];_D(e)&&(e=new MP({name:RP,params:{collapsible:!1,className:"m-map-info",position:yP}},(function(e){LP(e,t)})).panel);return e.addClassName("m-with-scale"),e},AP=function(t,e){var r,n=(CP(r={},cP.NAME,(function(){return function(t){var e=t;if(_D(e.panel.TOOLS)){var r=new MP({name:"tools",params:{collapsible:!0,className:"m-tools",collapsedButtonClass:"g-cartografia-herramienta",position:pP,tooltip:"Panel de herramientas"}});e.panel.TOOLS=r.panel}return e.panel.TOOLS}(e)})),CP(r,Hw.NAME,(function(){return new MP({name:Hw.NAME,params:{collapsible:!0,className:"m-layerswitcher",collapsedButtonClass:"g-cartografia-capas2",position:dP,tooltip:uu("layerswitcher").title}},(function(t){t.on(Cl,(function(t){BD(t.querySelector(".m-panel-controls"))})),t.on(Ul,(function(t){var e=t.getControls()[0];e.registerEvents(),e.render()})),t.on(Bl,(function(t){t.getControls()[0].unregisterEvents()}))})).panel})),CP(r,CE.NAME,(function(){return new MP({name:CE.NAME,params:{collapsible:!1,className:"m-location",position:yP}}).panel})),CP(r,TS.NAME,(function(){return function(t){var e=t.getPanels("map-info")[0];return _D(e)&&(e=new MP({name:RP,params:{collapsible:!1,className:"m-map-info",position:yP,tooltip:"Coordenadas del puntero"}}).panel),e.addClassName("m-with-mouse"),e}(e)})),CP(r,QS.NAME,(function(){return function(t){var e=t.getPanels("map-info")[0];return _D(e)&&(e=new MP({name:RP,params:{collapsible:!1,className:"m-map-info",position:yP}}).panel),e.addClassName("m-with-overview"),e}(e)})),CP(r,PI.NAME,(function(){return new MP({name:PI.NAME,params:{collapsible:!1,className:"m-panzoom",position:pP}}).panel})),CP(r,Ru.NAME,(function(){return new MP({name:Ru.NAME,params:{collapsible:!1,className:"m-panzoombar",position:pP,tooltip:"Nivel de zoom"}}).panel})),CP(r,_O.NAME,(function(){return new MP({name:_O.NAME,params:{collapsible:!1,className:"m-rotate",position:dP}}).panel})),CP(r,HE.NAME,(function(){return NP(e)})),CP(r,"".concat(HE.NAME,"*true"),(function(){return NP(e)})),CP(r,QO.NAME,(function(){return function(t){return new MP({name:QO.NAME,params:{collapsible:!1,className:"m-scaleline",position:gP,tooltip:"Línea de escala"}},(function(e){LP(e,t)})).panel}(e)})),CP(r,Ld.NAME,(function(){return function(t){var e=t.getPanels("map-info")[0];return _D(e)&&(e=new MP({name:RP,params:{collapsible:!1,className:"m-map-info",position:yP}},(function(e){LP(e,t)})).panel),e.addClassName("m-with-wmcselector"),e}(e)})),r)[t.name];return vD(n)?n():null},kP=r(114),jP=r.n(kP);function FP(t,e){for(var r=0;r1&&(e=r.reduce((function(t,e){var r;return _D(t)||(r=t instanceof o?t.getAttribute(e):t[e]),r}),this))}return e}},{key:"equals",value:function(t){return this.getId()===t.getId()}}])&&JP(e.prototype,r),n&&JP(e,n),o}(Il);function nR(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new lR(e);return fR(this,o),(t=i.call(this,r)).map_=null,t.layers_=[],t.activated_=!1,t.prevSelectedFeatures_={},t.prevHoverFeatures_={},vD(r.addTo)||_l(uu("exception").addto_method),vD(r.getFeaturesByLayer)||_l(uu("exception").getfeaturesbylayer_method),t}return e=o,(r=[{key:"addTo",value:function(t){this.map_=t,this.map_.on(ru,this.moveOverMap_.bind(this)),this.map_.on(eu,this.clickOnMap_.bind(this)),this.getImpl().addTo(this.map_),this.fire(Cl)}},{key:"clickOnMap_",value:function(t){var e=this;if(!0===this.activated_){var r=this.getImpl();this.map_.removePopup(),this.layers_.forEach((function(n){var i=r.getFeaturesByLayer(t,n),o=cR(e.prevSelectedFeatures_[n.name]);if(0===i.length&&o.length>0)e.unselectFeatures(o,n,t);else if(i.length>0){var a=i.filter((function(t){return!o.some((function(e){return e.equals(t)}))})),s=o.filter((function(t){return!i.some((function(e){return e.equals(t)}))}));s.length>0&&e.unselectFeatures(s,n,t),a.length>0&&e.selectFeatures(a,n,t)}}))}}},{key:"moveOverMap_",value:function(t){var e=this;if(!0===this.activated_){var r=this.getImpl();this.layers_.forEach((function(n){var i=r.getFeaturesByLayer(t,n),o=cR(e.prevHoverFeatures_[n.name]);if(0===i.length&&o.length>0)e.leaveFeatures_(o,n,t);else if(i.length>0){var a=i.filter((function(t){return(t instanceof mG||t instanceof rR)&&!o.some((function(e){return e.equals(t)}))})),s=o.filter((function(t){return!i.some((function(e){return e.equals(t)}))}));s.length>0&&e.leaveFeatures_(s,n,t),a.length>0&&e.hoverFeatures_(a,n,t)}}))}}},{key:"selectFeatures",value:function(t,e,r){this.prevSelectedFeatures_[e.name]=this.prevSelectedFeatures_[e.name].concat(t);var n=e.getImpl();vD(n.selectFeatures)&&n.selectFeatures(t,r.coord,r),e.fire(Vl,[t,r])}},{key:"unselectFeatures",value:function(t,e,r){this.prevSelectedFeatures_[e.name]=this.prevSelectedFeatures_[e.name].filter((function(e){return!t.some((function(t){return t.equals(e)}))}));var n=e.getImpl();vD(n.unselectFeatures)&&n.unselectFeatures(t,r.coord),e.fire(ql,[t,r.coord])}},{key:"hoverFeatures_",value:function(t,e,r){this.prevHoverFeatures_[e.name]=this.prevHoverFeatures_[e.name].concat(t),e.fire(Yl,[t,r]),this.getImpl().addCursorPointer()}},{key:"leaveFeatures_",value:function(t,e,r){this.prevHoverFeatures_[e.name]=this.prevHoverFeatures_[e.name].filter((function(e){return!t.some((function(t){return t.equals(e)}))})),e.fire(Wl,[t,r.coord]),this.getImpl().removeCursorPointer()}},{key:"activate",value:function(){!1===this.activated_&&(this.activated_=!0,this.fire(Dl))}},{key:"deactivate",value:function(){!0===this.activated_&&(this.activated_=!1,this.fire(Gl))}},{key:"addLayer",value:function(t){DD(this.layers_,t)||(this.layers_.push(t),this.prevSelectedFeatures_[t.name]=[],this.prevHoverFeatures_[t.name]=[])}},{key:"removeLayer",value:function(t){this.layers_=this.layers_.filter((function(e){return!e.equals(t)})),this.prevSelectedFeatures_[t.name]=null,this.prevHoverFeatures_[t.name]=null,delete this.prevSelectedFeatures_[t.name],delete this.prevHoverFeatures_[t.name]}},{key:"destroy",value:function(){}},{key:"clearSelectedFeatures",value:function(){var t=this;Object.keys(this.prevSelectedFeatures_).forEach((function(e){t.prevSelectedFeatures_[e]=[]}))}},{key:"clearHoverFeatures",value:function(){var t=this;Object.keys(this.prevHoverFeatures_).forEach((function(e){t.prevHoverFeatures_[e]=[]}))}}])&&pR(e.prototype,r),n&&pR(e,n),o}(Il),vR=r(115),bR=r.n(vR);function xR(t){return(xR="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function wR(t,e){for(var r=0;r0;else{var h=c.getType();s=h===fo.a.POINT||h===fo.a.MULTI_POINT}}s&&(l=o.get("name"),(s=s&&!!l)&&l.search(/&[^&]+;/)>-1&&($R||($R=document.createElement("textarea")),$R.innerHTML=l,l=$R.value));var f=r;if(t?f=t:e&&(f=nL(e,r,n)),s){var p=function(t,e){var r=[0,0],n="start",i=t.getImage();if(i){var o=i.getSize();if(o&&2==o.length){var a=i.getScaleArray(),s=i.getAnchor();r[0]=a[0]*(o[0]-s[0]),r[1]=a[1]*(o[1]/2-s[1]),n="left"}}var l=t.getText();l?((l=l.clone()).setFont(l.getFont()||KR.getFont()),l.setScale(l.getScale()||KR.getScale()),l.setFill(l.getFill()||KR.getFill()),l.setStroke(l.getStroke()||HR)):l=KR.clone();return l.setText(e),l.setOffsetX(r[0]),l.setOffsetY(r[1]),l.setTextAlign(n),new $y({image:i,text:l})}(f[0],l);return u.length>0?(p.setGeometry(new hh(u)),[p,new $y({geometry:f[0].getGeometry(),image:null,fill:f[0].getFill(),stroke:f[0].getStroke(),text:null})].concat(f.slice(1))):p}return f}}(r.Style,r.styleUrl,this.defaultStyle_,this.sharedStyles_,this.showPointNames_);n.setStyle(s)}return delete r.Style,n.setProperties(r,!0),n}},e.prototype.readSharedStyle_=function(t,e){var r=t.getAttribute("id");if(null!==r){var n=ML.call(this,t,e);if(n){var i=void 0,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)i=new URL("#"+r,o).href;else i="#"+r;this.sharedStyles_[i]=n}}},e.prototype.readSharedStyleMap_=function(t,e){var r=t.getAttribute("id");if(null!==r){var n=cL.call(this,t,e);if(n){var i,o=t.baseURI;if(o&&"about:blank"!=o||(o=window.location.href),o)i=new URL("#"+r,o).href;else i="#"+r;this.sharedStyles_[i]=n}}},e.prototype.readFeatureFromNode=function(t,e){if(!Object(h.f)(FR,t.namespaceURI))return null;var r=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return r||null},e.prototype.readFeaturesFromNode=function(t,e){if(!Object(h.f)(FR,t.namespaceURI))return[];var r,n=t.localName;if("Document"==n||"Folder"==n)return(r=this.readDocumentOrFolder_(t,[this.getReadOptions(t,e)]))||[];if("Placemark"==n){var i=this.readPlacemark_(t,[this.getReadOptions(t,e)]);return i?[i]:[]}if("kml"==n){r=[];for(var o=t.firstElementChild;o;o=o.nextElementSibling){var a=this.readFeaturesFromNode(o,e);a&&Object(h.c)(r,a)}return r}return[]},e.prototype.readName=function(t){if(t){if("string"==typeof t){var e=m(t);return this.readNameFromDocument(e)}return y(t)?this.readNameFromDocument(t):this.readNameFromNode(t)}},e.prototype.readNameFromDocument=function(t){for(var e=t.firstChild;e;e=e.nextSibling)if(e.nodeType==Node.ELEMENT_NODE){var r=this.readNameFromNode(e);if(r)return r}},e.prototype.readNameFromNode=function(t){for(var e=t.firstElementChild;e;e=e.nextElementSibling)if(Object(h.f)(FR,e.namespaceURI)&&"name"==e.localName)return X(e);for(e=t.firstElementChild;e;e=e.nextElementSibling){var r=e.localName;if(Object(h.f)(FR,e.namespaceURI)&&("Document"==r||"Folder"==r||"Placemark"==r||"kml"==r)){var n=this.readNameFromNode(e);if(n)return n}}},e.prototype.readNetworkLinks=function(t){var e=[];if("string"==typeof t){var r=m(t);Object(h.c)(e,this.readNetworkLinksFromDocument(r))}else y(t)?Object(h.c)(e,this.readNetworkLinksFromDocument(t)):Object(h.c)(e,this.readNetworkLinksFromNode(t));return e},e.prototype.readNetworkLinksFromDocument=function(t){for(var e=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&Object(h.c)(e,this.readNetworkLinksFromNode(r));return e},e.prototype.readNetworkLinksFromNode=function(t){for(var e=[],r=t.firstElementChild;r;r=r.nextElementSibling)if(Object(h.f)(FR,r.namespaceURI)&&"NetworkLink"==r.localName){var n=R({},UR,r,[]);e.push(n)}for(r=t.firstElementChild;r;r=r.nextElementSibling){var i=r.localName;!Object(h.f)(FR,r.namespaceURI)||"Document"!=i&&"Folder"!=i&&"kml"!=i||Object(h.c)(e,this.readNetworkLinksFromNode(r))}return e},e.prototype.readRegion=function(t){var e=[];if("string"==typeof t){var r=m(t);Object(h.c)(e,this.readRegionFromDocument(r))}else y(t)?Object(h.c)(e,this.readRegionFromDocument(t)):Object(h.c)(e,this.readRegionFromNode(t));return e},e.prototype.readRegionFromDocument=function(t){for(var e=[],r=t.firstChild;r;r=r.nextSibling)r.nodeType==Node.ELEMENT_NODE&&Object(h.c)(e,this.readRegionFromNode(r));return e},e.prototype.readRegionFromNode=function(t){for(var e=[],r=t.firstElementChild;r;r=r.nextElementSibling)if(Object(h.f)(FR,r.namespaceURI)&&"Region"==r.localName){var n=R({},zR,r,[]);e.push(n)}for(r=t.firstElementChild;r;r=r.nextElementSibling){var i=r.localName;!Object(h.f)(FR,r.namespaceURI)||"Document"!=i&&"Folder"!=i&&"kml"!=i||Object(h.c)(e,this.readRegionFromNode(r))}return e},e.prototype.writeFeaturesNode=function(t,e){e=this.adaptOptions(e);var r=p(FR[4],"kml"),n="http://www.w3.org/2000/xmlns/";r.setAttributeNS(n,"xmlns:gx",jR[0]),r.setAttributeNS(n,"xmlns:xsi",f),r.setAttributeNS(f,"xsi:schemaLocation","http://www.opengis.net/kml/2.2 https://developers.google.com/kml/schema/kml22gx.xsd");var i={node:r},o={};t.length>1?o.Document=t:1==t.length&&(o.Placemark=t[0]);var a=VR[r.namespaceURI],s=C(o,a);return N(i,qR,I,s,[e],a,this),r},e}(AI);function nL(t,e,r){return Array.isArray(t)?t:"string"==typeof t?nL(r[t],e,r):e}function iL(t){var e=d(t,!1),r=/^\s*#?\s*([0-9A-Fa-f]{8})\s*$/.exec(e);if(r){var n=r[1];return[parseInt(n.substr(6,2),16),parseInt(n.substr(4,2),16),parseInt(n.substr(2,2),16),parseInt(n.substr(0,2),16)/255]}}function oL(t){var e=d(t,!1),r=[];e=e.replace(/\s*,\s*/g,",");for(var n,i=/^\s*([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?),([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|,|$)(?:([+\-]?\d*\.?\d+(?:e[+\-]?\d+)?)(?:\s+|$))?\s*/i;n=i.exec(e);){var o=parseFloat(n[1]),a=parseFloat(n[2]),s=n[3]?parseFloat(n[3]):0;r.push(o,a,s),e=e.substr(n[0].length)}if(""===e)return r}function aL(t){var e=d(t,!1).trim(),r=t.baseURI;return r&&"about:blank"!=r||(r=window.location.href),r?new URL(e,r).href:e}function sL(t){var e=d(t,!1).trim().replace(/^(?!.*#)/,"#"),r=t.baseURI;return r&&"about:blank"!=r||(r=window.location.href),r?new URL(e,r).href:e}function lL(t){return V(t)}var uL=T(FR,{Pair:function(t,e){var r=R({},DL,t,e,this);if(!r)return;var n=r.key;if(n&&"normal"==n){var i=r.styleUrl;i&&(e[e.length-1]=i);var o=r.Style;o&&(e[e.length-1]=o)}}});function cL(t,e){return R(void 0,uL,t,e,this)}var hL=T(FR,{Icon:w((function(t,e){var r=R({},bL,t,e);return r||null})),color:w(iL),heading:w(V),hotSpot:w((function(t){var e,r=t.getAttribute("xunits"),n=t.getAttribute("yunits");return e="insetPixels"!==r?"insetPixels"!==n?Hg:Kg:"insetPixels"!==n?Zg:Jg,{x:parseFloat(t.getAttribute("x")),xunits:DR[r],y:parseFloat(t.getAttribute("y")),yunits:DR[n],origin:e}})),scale:w(lL)});var fL=T(FR,{color:w(iL),scale:w(lL)});var pL=T(FR,{color:w(iL),width:w(V)});var dL=T(FR,{color:w(iL),fill:w(U),outline:w(U)});var gL=T(FR,{coordinates:b(oL)});function yL(t,e){return R(null,gL,t,e)}var mL=T(jR,{Track:v(vL)});var _L=T(FR,{when:function(t,e){var r=e[e.length-1].whens,n=d(t,!1),i=Date.parse(n);r.push(isNaN(i)?0:i)}},T(jR,{coord:function(t,e){var r=e[e.length-1].coordinates,n=d(t,!1),i=/^\s*([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s+([+\-]?\d+(?:\.\d*)?(?:e[+\-]?\d*)?)\s*$/i.exec(n);if(i){var o=parseFloat(i[1]),a=parseFloat(i[2]),s=parseFloat(i[3]);r.push([o,a,s])}else r.push([])}}));function vL(t,e){var r=R({coordinates:[],whens:[]},_L,t,e);if(r){for(var n=[],i=r.coordinates,o=r.whens,a=0,s=Math.min(i.length,o.length);a0){var n=e[e.length-1];n.push.apply(n,r)}},outerBoundaryIs:function(t,e){var r=R(void 0,VL,t,e);if(r){e[e.length-1][0]=r}}});function RL(t,e){var r=R({},EL,t,e),n=R([null],PL,t,e);if(n&&n[0]){for(var i=n[0],o=[i.length],a=1,s=n.length;a0,c=l.href;c?n=c:u&&(n=AR);var h,f=Hg,p=r.hotSpot;p?(i=[p.x,p.y],o=p.xunits,a=p.yunits,f=p.origin):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(n)&&(/pushpin/.test(n)?(i=RR,o=LR,a=MR):/arrow-reverse/.test(n)?(i=[54,42],o=LR,a=MR):/paddle/.test(n)&&(i=[32,1],o=LR,a=MR));var d,g=l.x,y=l.y;void 0!==g&&void 0!==y&&(h=[g,y]);var m,_=l.w,v=l.h;void 0!==_&&void 0!==v&&(d=[_,v]);var b=r.heading;void 0!==b&&(m=Object(mo.m)(b));var x=r.scale,w=r.color;if(u){n==AR&&(d=NR);var E=new iy({anchor:i,anchorOrigin:f,anchorXUnits:o,anchorYUnits:a,crossOrigin:this.crossOrigin_,offset:h,offsetOrigin:Hg,rotation:m,scale:x,size:d,src:this.iconUrlFunction_(n),color:w}),O=E.getScaleArray()[0],S=E.getSize();if(null===S){var I=E.getImageState();if(I===$g.a.IDLE||I===$g.a.LOADING){E.listenImageChange((function t(){var e=E.getImageState();if(e!==$g.a.IDLE&&e!==$g.a.LOADING){var r=E.getSize();if(r&&2==r.length){var n=tL(r);E.setScale(O*n)}E.unlistenImageChange(t)}})),I===$g.a.IDLE&&E.load()}}else if(2==S.length){var C=tL(S);E.setScale(O*C)}s.imageStyle=E}else s.imageStyle=WR}},LabelStyle:function(t,e){var r=R({},fL,t,e);if(r){var n=e[e.length-1],i=new Yg({fill:new zg({color:"color"in r?r.color:PR}),scale:r.scale});n.textStyle=i}},LineStyle:function(t,e){var r=R({},pL,t,e);if(r){var n=e[e.length-1],i=new Bg({color:"color"in r?r.color:PR,width:"width"in r?r.width:1});n.strokeStyle=i}},PolyStyle:function(t,e){var r=R({},dL,t,e);if(r){var n=e[e.length-1],i=new zg({color:"color"in r?r.color:PR});n.fillStyle=i;var o=r.fill;void 0!==o&&(n.fill=o);var a=r.outline;void 0!==a&&(n.outline=a)}}});function ML(t,e){var r=R({},LL,t,e,this);if(!r)return null;var n,i="fillStyle"in r?r.fillStyle:YR,o=r.fill;void 0===o||o||(i=null),"imageStyle"in r?r.imageStyle!=WR&&(n=r.imageStyle):n=XR;var a="textStyle"in r?r.textStyle:KR,s="strokeStyle"in r?r.strokeStyle:ZR,l=r.outline;return void 0===l||l?[new $y({fill:i,image:n,stroke:s,text:a,zIndex:void 0})]:[new $y({geometry:function(t){var e=t.getGeometry(),r=e.getType();return r===fo.a.GEOMETRY_COLLECTION?new hh(e.getGeometriesArrayRecursive().filter((function(t){var e=t.getType();return e!==fo.a.POLYGON&&e!==fo.a.MULTI_POLYGON}))):r!==fo.a.POLYGON&&r!==fo.a.MULTI_POLYGON?e:void 0},fill:i,image:n,stroke:s,text:a,zIndex:void 0}),new $y({geometry:function(t){var e=t.getGeometry(),r=e.getType();return r===fo.a.GEOMETRY_COLLECTION?new hh(e.getGeometriesArrayRecursive().filter((function(t){var e=t.getType();return e===fo.a.POLYGON||e===fo.a.MULTI_POLYGON}))):r===fo.a.POLYGON||r===fo.a.MULTI_POLYGON?e:void 0},fill:i,stroke:null,zIndex:void 0})]}function NL(t,e){var r,n,i,o=e.length,a=new Array(e.length),s=new Array(e.length),l=new Array(e.length);r=!1,n=!1,i=!1;for(var u=0;u0){var m=C(i,a);N(n,dM,yM,[{names:a,values:m}],r)}var _=r[0],v=e.getGeometry();v&&(v=LI(v,!0,_)),N(n,dM,oM,[v],r)}var _M=T(FR,["extrude","tessellate","altitudeMode","coordinates"]),vM=T(FR,{extrude:E(H),tessellate:E(H),altitudeMode:E(J),coordinates:E((function(t,e,r){var n,i=r[r.length-1],o=i.layout,a=i.stride;o==Io||o==To?n=2:o==Co||o==Po?n=3:Object(Ui.a)(!1,34);var s=e.length,l="";if(s>0){l+=e[0];for(var u=1;u0&&void 0!==arguments[0]?arguments[0]:{};return MM(this,o),(t=i.call(this)).screenOverlay_=null,t.label_=void 0===e.label||e.label,t}return e=o,(r=[{key:"readCustomFeatures",value:function(t,e){var r=this,n=this.readFeatures(t,e).map((function(t){var e=t.getStyle()(t);if(!1===r.label_){var n=[e[0]];t.setStyle(n)}return Array.isArray(e)||(e=[e]),e.forEach((function(t){if(t.getImage()instanceof iy){var e=t.getImage();t.setImage(e)}})),t.set("name",qD(t.get("name"))),t}));return this.readScreenOverlay(t),n}},{key:"readScreenOverlay",value:function(t){var e="xunits",r="yunits",n=m(t).querySelector("ScreenOverlay");if(null!==n){var i,a,s,l,u,c,h=n.querySelector("Icon"),f=null!==h?h.querySelector("href").innerHTML:o.DEFAULT_NO_IMAGE_STYLE,p=n.querySelector("overlayXY");null!==p&&(i=[parseFloat(p.getAttribute("x")),parseFloat(p.getAttribute("y"))],a=p.getAttribute(e),s=p.getAttribute(r));var d,g,y,_=n.querySelector("screenXY");null!==_?(l=[parseFloat(_.getAttribute("x")),parseFloat(_.getAttribute("y"))],u=_.getAttribute(e),c=_.getAttribute(r)):f===o.DEFAULT_IMAGE_STYLE_SRC?(l=o.DEFAULT_IMAGE_STYLE_ANCHOR,u=o.DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS,c=o.DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS):/^http:\/\/maps\.(?:google|gstatic)\.com\//.test(f)&&(l=[.5,0],u=Wg,c=Wg);var v,b,x,w=n.querySelector("rotationXY");if(null!==w){var E=parseFloat(w.getAttribute("x"));d=Math.PI/180*E,g=w.getAttribute(e),y=w.getAttribute(r)}var O=n.querySelector("size");null!==O&&(v=[parseFloat(O.getAttribute("x")),parseFloat(O.getAttribute("y"))],b=O.getAttribute(e),x=O.getAttribute(r)),this.screenOverlay_={screenXY:l,screenXUnits:u,screenYUnits:c,overlayXY:i,overlayXUnits:a,overlayYUnits:s,rotationXY:d,rotationXUnits:g,rotationYUnits:y,size:v,sizeXUnits:b,sizeYUnits:x,src:f}}}},{key:"getScreenOverlay",value:function(){return this.screenOverlay_}}])&&NM(e.prototype,r),n&&NM(e,n),o}(RM);DM.DEFAULT_NO_IMAGE_STYLE="NO_IMAGE",DM.DEFAULT_IMAGE_STYLE_SRC="https://maps.google.com/mapfiles/kml/pushpin/ylw-pushpin.png",DM.DEFAULT_IMAGE_STYLE_ANCHOR=[20,2],DM.DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS="pixels",DM.DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS="pixels";var GM=DM;function UM(t){return(UM="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function BM(t,e){for(var r=0;r1?this.popup_.removeTab(this.tabPopup_):this.map.removePopup())}},{key:"getFeaturesExtentPromise",value:function(t,e){var r=this;return new Promise((function(n){var i=r.map.getProjection().code;if(!0===r.isLoaded()){var o=r.getFeatures(t,e),a=wh.getFeaturesExtent(o,i);n(a)}else r.requestFeatures_().then((function(t){var e=wh.getFeaturesExtent(t.features,i);n(e)}))}))}},{key:"requestFeatures_",value:function(){var t=this;return _D(this.loadFeaturesPromise_)&&(this.loadFeaturesPromise_=new Promise((function(e){t.loader_.getLoaderFn((function(t){e(t)}))(null,null,Object(u.o)(t.map.getProjection().code))}))),this.loadFeaturesPromise_}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.url===t.url,e=e&&this.name===t.name,e=e&&this.extract===t.extract),e}}])&&BM(e.prototype,r),n&&BM(e,n),o}(kx);function XM(t){return(XM="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function HM(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function ZM(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};JM(this,o);var a=Ec(t,Mu),s=ZM(ZM({},r),{},{label:a.label}),l=new WM(s,n);return e=i.call(this,a,r,void 0,l),dD(WM)&&_l(uu("exception").kmllayer_method),_D(t)&&_l(uu("exception").no_param),e.extract=a.extract,e.options=r,e.label=a.label,e}return e=o,(r=[{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.url===t.url,e=e&&this.name===t.name,e=e&&this.extract===t.extract),e}},{key:"type",get:function(){return Mu},set:function(t){dD(t)||_D(t)||t===Mu||_l("El tipo de capa debe ser '".concat(Mu).concat("' pero se ha especificado '").concat(t).concat("'"))}},{key:"extract",get:function(){return this.getImpl().extract},set:function(t){_D(t)?this.getImpl().extract=!0:xD(t)?this.getImpl().extract="true"===OD(t):this.getImpl().extract=t}},{key:"options",get:function(){return this.getImpl().options},set:function(t){this.getImpl().options=t}}])&&$M(e.prototype,r),n&&$M(e,n),o}(Dw),iN=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function oN(t){if("string"==typeof t){var e=JSON.parse(t);return e||null}return null!==t?t:null}var aN=function(t){function e(){return t.call(this)||this}return iN(e,t),e.prototype.getType=function(){return bg},e.prototype.readFeature=function(t,e){return this.readFeatureFromObject(oN(t),this.getReadOptions(t,e))},e.prototype.readFeatures=function(t,e){return this.readFeaturesFromObject(oN(t),this.getReadOptions(t,e))},e.prototype.readFeatureFromObject=function(t,e){return Object(Gn.b)()},e.prototype.readFeaturesFromObject=function(t,e){return Object(Gn.b)()},e.prototype.readGeometry=function(t,e){return this.readGeometryFromObject(oN(t),this.getReadOptions(t,e))},e.prototype.readGeometryFromObject=function(t,e){return Object(Gn.b)()},e.prototype.readProjection=function(t){return this.readProjectionFromObject(oN(t))},e.prototype.readProjectionFromObject=function(t){return Object(Gn.b)()},e.prototype.writeFeature=function(t,e){return JSON.stringify(this.writeFeatureObject(t,e))},e.prototype.writeFeatureObject=function(t,e){return Object(Gn.b)()},e.prototype.writeFeatures=function(t,e){return JSON.stringify(this.writeFeaturesObject(t,e))},e.prototype.writeFeaturesObject=function(t,e){return Object(Gn.b)()},e.prototype.writeGeometry=function(t,e){return JSON.stringify(this.writeGeometryObject(t,e))},e.prototype.writeGeometryObject=function(t,e){return Object(Gn.b)()},e}(RI),sN=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function lN(t,e){if(!t)return null;var r;switch(t.type){case fo.a.POINT:r=function(t){return new aa(t.coordinates)}(t);break;case fo.a.LINE_STRING:r=function(t){return new Qc(t.coordinates)}(t);break;case fo.a.POLYGON:r=function(t){return new Oa(t.coordinates)}(t);break;case fo.a.MULTI_POINT:r=function(t){return new Hc(t.coordinates)}(t);break;case fo.a.MULTI_LINE_STRING:r=function(t){return new eh(t.coordinates)}(t);break;case fo.a.MULTI_POLYGON:r=function(t){return new ih(t.coordinates)}(t);break;case fo.a.GEOMETRY_COLLECTION:r=function(t,e){var r=t.geometries.map((function(t){return lN(t,e)}));return new hh(r)}(t);break;default:throw new Error("Unsupported GeoJSON type: "+t.type)}return LI(r,!1,e)}function uN(t,e){var r,n=(t=LI(t,!0,e)).getType();switch(n){case fo.a.POINT:r=function(t,e){return{type:"Point",coordinates:t.getCoordinates()}}(t);break;case fo.a.LINE_STRING:r=function(t,e){return{type:"LineString",coordinates:t.getCoordinates()}}(t);break;case fo.a.POLYGON:r=function(t,e){var r;e&&(r=e.rightHanded);return{type:"Polygon",coordinates:t.getCoordinates(r)}}(t,e);break;case fo.a.MULTI_POINT:r=function(t,e){return{type:"MultiPoint",coordinates:t.getCoordinates()}}(t);break;case fo.a.MULTI_LINE_STRING:r=function(t,e){return{type:"MultiLineString",coordinates:t.getCoordinates()}}(t);break;case fo.a.MULTI_POLYGON:r=function(t,e){var r;e&&(r=e.rightHanded);return{type:"MultiPolygon",coordinates:t.getCoordinates(r)}}(t,e);break;case fo.a.GEOMETRY_COLLECTION:r=function(t,e){return{type:"GeometryCollection",geometries:t.getGeometriesArray().map((function(t){var r=Object(ii.a)({},e);return delete r.featureProjection,uN(t,r)}))}}(t,e);break;case fo.a.CIRCLE:r={type:"GeometryCollection",geometries:[]};break;default:throw new Error("Unsupported geometry type: "+n)}return r}var cN=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this)||this).dataProjection=Object(u.o)(n.dataProjection?n.dataProjection:"EPSG:4326"),n.featureProjection&&(r.defaultFeatureProjection=Object(u.o)(n.featureProjection)),r.geometryName_=n.geometryName,r.extractGeometryName_=n.extractGeometryName,r.supportedMediaTypes=["application/geo+json","application/vnd.geo+json"],r}return sN(e,t),e.prototype.readFeatureFromObject=function(t,e){var r=null,n=lN((r="Feature"===t.type?t:{type:"Feature",geometry:t,properties:null}).geometry,e),i=new Wc;return this.geometryName_?i.setGeometryName(this.geometryName_):this.extractGeometryName_&&"geometry_name"in r!==void 0&&i.setGeometryName(r.geometry_name),i.setGeometry(n),"id"in r&&i.setId(r.id),r.properties&&i.setProperties(r.properties,!0),i},e.prototype.readFeaturesFromObject=function(t,e){var r=null;if("FeatureCollection"===t.type){r=[];for(var n=t.features,i=0,o=n.length;i0&&void 0!==arguments[0]?arguments[0]:{};return fN(this,o),i.call(this,t)}return e=o,n=[{key:"readProjectionFromObject",value:function(t){var e,r=t.crs;if(r)if("name"===r.type)e=Object(u.o)(r.properties.name);else{if("EPSG"!==r.type)throw e=null,new Error("Unknown crs.type: ".concat(r.type));e=Object(u.o)("EPSG:".concat(r.properties.code))}else e="EPSG:4326";return e}},{key:"applyIcon",value:function(t,e){var r,n=document.createElement("IMG");n.src=e.url,n.width=e.width,n.height=e.height,n.crossOrigin="anonymous",e.anchor&&e.anchor.x&&e.anchor.y&&(r=[e.anchor.x,e.anchor.y]),t.setStyle(new $y({image:new iy({img:n,imgSize:[e.width,e.height],anchor:r})}))}}],(r=[{key:"readFeatureFromObject",value:function(t,e){var r=t,n=dN(_N(o.prototype),"readFeatureFromObject",this).call(this,r,e);return this.geometryName_&&n.setGeometryName(this.geometryName_),_D(r.id)?n.setId(CD("geojson_")):n.setId(r.id),r.properties&&n.setProperties(r.properties),r.click&&(n.click=r.click),r.properties&&r.properties.vendor&&r.properties.vendor.mapea&&r.properties.vendor.mapea.icon&&o.applyIcon(n,r.properties.vendor.mapea.icon),n}},{key:"writeFeatureObject",value:function(t,e){var r=e,n={type:"Feature"},i=t.getId();i&&(n.id=i);var a=t.getGeometry();n.geometry=a?dN(_N(o.prototype),"writeGeometryObject",this).call(this,a,r):null;var s=t.getProperties();return delete s[t.getGeometryName()],_D(s)?n.properties=null:n.properties=s,_D(t.click)||(n.click=t.click),n}},{key:"write",value:function(t){var e=this;return t.map((function(t){return e.writeFeatureObject(t.getImpl().getOLFeature())}))}},{key:"read",value:function(t,e,r){var n=r.code;_D(n)&&(n=_D(r.featureProjection)?Object(u.o)(r.getCode()):Object(u.o)(r.featureProjection.getCode()));var i=o.readProjectionFromObject(t);return e.map((function(t){var e=t.id,r=new mG(e,t),o=r.getImpl().getOLFeature(),a=o.getGeometry().transform(i,n);return o.setGeometry(a),r}))}}])&&pN(e.prototype,r),n&&pN(e,n),o}(cN);function bN(t){return(bN="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function xN(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function wN(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};xN(this,o);var r=new vN(e);return t=i.call(this,r),dD(vN)&&_l(uu("exception").geojson_method),t}return e=o,(r=[{key:"write",value:function(t){var e=t;return mD(e)||(e=[e]),this.getImpl().write(e)}},{key:"read",value:function(t,e){var r=t,n=[];if(!_D(r)){xD(r)&&(r=JSON.parse(r));var i=[];"FeatureCollection"===r.type?i=r.features:"Feature"===r.type&&(i=[r]),n=this.getImpl().read(r,i,e)}return n}}])&&wN(e.prototype,r),n&&wN(e,n),o}(Il);function TN(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function PN(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};TN(this,t),this.rootPrefix=null,this.namespaces={ol:"http://openlayers.org/context",wmc:"http://www.opengis.net/context",sld:"http://www.opengis.net/sld",xlink:"http://www.w3.org/1999/xlink",xsi:"http://www.w3.org/2001/XMLSchema-instance",xsd:"http://www.w3.org/2001/XMLSchema",ogc:"http://www.opengis.net/ogc",wmcext:"http://wmcext.org/context"},this.options=e}var e,r,n;return e=t,n=[{key:"getChildValue",value:function(t,e){var r=e||"";if(t)for(var n=t.firstChild;n;n=n.nextSibling)switch(n.nodeType){case 3:case 4:r+=n.nodeValue}return r}}],(r=[{key:"read",value:function(t){var e=t;xD(t)&&(e=m(t)),9!==e.nodeType&&_l(uu("exception").must_be_document);var r={};return this.readRoot(r,e),r}},{key:"readRoot",value:function(t,e){var r=t,n=e.documentElement;this.rootPrefix=n.prefix,r.version=n.getAttribute("version"),this.runChildNodes(r,n)}},{key:"runChildNodes",value:function(t,e){for(var r,n,i,o,a=e.childNodes,s=0,l=a.length;s0&&void 0!==arguments[0]?arguments[0]:{};return YN(this,r),e.call(this,t)}return r}(VN);function JN(t){return(JN="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function $N(t,e){for(var r=0;r=0?Ux(uu("dialog").only_one_filter):_l(uu("exception").no_getfeature_response)}))}))}},{key:"getRequestUrl_",value:function(t,e){return this.service_.getFeatureUrl(null,e)}}])&&$N(e.prototype,r),n&&$N(e,n),o}(il);function iA(t){return(iA="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function oA(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function aA(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;return oA(this,o),(t=i.call(this,e,r)).describeFeatureType_=null,t.formater_=null,t.loader_=null,t.service_=null,t.loaded_=!1,_D(t.options.getFeatureOutputFormat)&&(t.options.getFeatureOutputFormat="application/json"),t}return e=o,(r=[{key:"addTo",value:function(t){var e=this;sA(hA(o.prototype),"addTo",this).call(this,t),t.getImpl().on(Zl,(function(){return e.refresh()}))}},{key:"refresh",value:function(t){t&&this.facadeVector_.removeFeatures(this.facadeVector_.getFeatures(!0)),this.updateSource_(t)}},{key:"updateSource_",value:function(t){var e=this;_D(this.vendorOptions_.source)&&(this.service_=new BN({url:this.url,namespace:this.namespace,name:this.name,version:this.version,ids:this.ids,cql:this.cql,projection:this.map.getProjection(),getFeatureOutputFormat:this.options.getFeatureOutputFormat,describeFeatureTypeOutputFormat:this.options.describeFeatureTypeOutputFormat},this.options.vendor),/json/gi.test(this.options.getFeatureOutputFormat)?this.formater_=new CN({defaultDataProjection:Object(u.o)(this.map.getProjection().code)}):this.formater_=new KN(this.name,this.version,this.map.getProjection()),this.loader_=new nA(this.map,this.service_,this.formater_),this.requestFeatures_().then((function(r){var n=e.facadeVector_.getStyle()instanceof jb,i=null;if(_D(e.ol3Layer)||(i=e.ol3Layer.getSource()),!0===t||_D(i)){var o=new Tg({loader:function(){e.loaded_=!0,e.facadeVector_.addFeatures(r),e.fire(Xl,[r]),e.facadeVector_.redraw()}});if(n){var a=e.facadeVector_.getStyle().getOptions().distance,s=new Rg({distance:a,source:o});e.ol3Layer.setStyle(e.facadeVector_.getStyle().getImpl().olStyleFn),e.ol3Layer.setSource(s)}else e.ol3Layer&&e.ol3Layer.setSource(o)}else n&&(i=i.getSource()),i.set("format",e.formater_),i.set("loader",e.loader_.getLoaderFn((function(t){e.loaded_=!0,e.facadeVector_.addFeatures(t),e.fire(Xl,[t]),e.facadeVector_.redraw()}))),i.set("strategy",_g),n||i.changed()})))}},{key:"getFeaturesExtentPromise",value:function(t,e){var r=this;return new Promise((function(n){var i=r.map.getProjection().code;if(!0===r.isLoaded()){var o=r.getFeatures(t,e),a=wh.getFeaturesExtent(o,i);n(a)}else r.requestFeatures_().then((function(t){var e=wh.getFeaturesExtent(t,i);n(e)}))}))}},{key:"setCQL",value:function(t){this.cql=t,this.refresh(!0)}},{key:"getDescribeFeatureType",value:function(){var t=this;return _D(this.describeFeatureType_)&&(this.describeFeatureType_=this.service_.getDescribeFeatureType().then((function(e){return _D(e)||(t.formater_=new vN({geometryName:e.geometryName,defaultDataProjection:Object(u.o)(t.map.getProjection().code)})),e}))),this.describeFeatureType_}},{key:"getDefaultValue",value:function(t){return"dateTime"===t?"0000-00-00T00:00:00":"date"===t?"0000-00-00":"time"===t?"00:00:00":"duration"===t?"P0Y":"int"===t||"number"===t||"float"===t||"double"===t||"decimal"===t||"short"===t||"byte"===t||"integer"===t||"long"===t||"negativeInteger"===t||"nonNegativeInteger"===t||"nonPositiveInteger"===t||"positiveInteger"===t||"unsignedLong"===t||"unsignedInt"===t||"unsignedShort"===t||"unsignedByte"===t?0:"hexBinary"===t?null:"-"}},{key:"isLoaded",value:function(){return this.loaded_}},{key:"requestFeatures_",value:function(){var t=this;return new Promise((function(e){t.loader_.getLoaderFn((function(t){e(t)}))(null,null,Object(u.o)(t.map.getProjection().code))}))}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.url===t.url,e=e&&this.namespace===t.namespace,e=e&&this.name===t.name,e=e&&this.ids===t.ids,e=e&&this.cql===t.cql,e=e&&this.version===t.version),e}}])&&aA(e.prototype,r),n&&aA(e,n),o}(kx),pA="POINT",dA="LINE",gA="POLYGON",yA="MPOINT",mA="MLINE",_A="MPOLYGON",vA=function(t){var e=OD(t,!0);return a[e]};function bA(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function xA(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:new fA(r,n);OA(this,o);var s=Ec(t,Au);return e=i.call(this,s,r,void 0,a),dD(fA)&&_l(uu("exception").wfslayer_method),_D(t)&&_l(uu("exception").no_param),e.namespace=s.namespace,e.legend=s.legend,e.cql=s.cql,e.geometry=s.geometry,e.ids=s.ids,e.version=s.version,e.options=r,e.extract=s.extract,e}return e=o,(r=[{key:"setCQL",value:function(t){var e=this,r=t;this.getImpl().getDescribeFeatureType().then((function(t){if(!_D(r)){var n=t.geometryName;r=r.replace(/{{geometryName}}/g,n)}e.getImpl().cql!==r&&e.getImpl().setCQL(r)}))}},{key:"setStyle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.DEFAULT_OPTIONS_STYLE;IA(RA(o.prototype),"setStyle",this).call(this,t,e,r)}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.url===t.url,e=e&&this.namespace===t.namespace,e=e&&this.name===t.name,e=e&&this.ids===t.ids,e=e&&this.cql===t.cql,e=e&&this.version===t.version),e}},{key:"type",get:function(){return Au},set:function(t){dD(t)||_D(t)||t===Au||_l("El tipo de capa debe ser '".concat(Au).concat("' pero se ha especificado '").concat(t).concat("'"))}},{key:"namespace",get:function(){return this.getImpl().namespace},set:function(t){this.getImpl().namespace=t}},{key:"legend",get:function(){return this.getImpl().legend},set:function(t){_D(t)?this.getImpl().legend=this.name:this.getImpl().legend=t}},{key:"cql",get:function(){return this.getImpl().cql},set:function(t){this.getImpl().cql=t}},{key:"geometry",get:function(){return this.getImpl().geometry},set:function(t){if(!_D(t)){var e=vA(t);_D(e)&&_l("El tipo de capa WFS ".concat(t," no se reconoce. Los tipos disponibles son: POINT, LINE, POLYGON, MPOINT, MLINE, MPOLYGON")),this.getImpl().geometry=e}}},{key:"ids",get:function(){return this.getImpl().ids},set:function(t){_D(t)?this.getImpl().ids=this.ids:this.getImpl().ids=t}},{key:"version",get:function(){return this.getImpl().version},set:function(t){_D(t)?this.getImpl().version="1.0.0":this.getImpl().version=t}}])&&SA(e.prototype,r),n&&SA(e,n),o}(Dw);LA.DEFAULT_PARAMS={fill:{color:"rgba(103, 175, 19, 0.2)",opacity:.4},stroke:{color:"#67af13",width:1}},LA.DEFAULT_OPTIONS_STYLE={point:xA(xA({},LA.DEFAULT_PARAMS),{},{radius:5}),line:xA({},LA.DEFAULT_PARAMS),polygon:xA({},LA.DEFAULT_PARAMS)};var MA=LA;function NA(t){return(NA="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function AA(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function kA(t,e){for(var r=0;r0&&this.readwmcOnlineResource(n,i[0]),r.options.metadataURL=n.href}},{key:"readwmcextmetadata",value:function(t,e){t.options.metadataUrl=e&&e.innerHTML}},{key:"readwmcAbstract",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.abstract=n)}},{key:"readwmcLatLonBoundingBox",value:function(t,e){t.llbbox=[parseFloat(e.getAttribute("minx")),parseFloat(e.getAttribute("miny")),parseFloat(e.getAttribute("maxx")),parseFloat(e.getAttribute("maxy"))]}},{key:"readwmcLegendURL",value:function(t,e){var r=t,n={width:e.getAttribute("width"),height:e.getAttribute("height")},i=e.getElementsByTagName("OnlineResource");i.length>0&&this.readwmcOnlineResource(n,i[0]),r.legend=n}},{key:"readsldFeatureTypeStyle",value:function(t,e){t.body=d(e)}},{key:"readwmcKeywordList",value:function(t,e){var r=t;r.keywords=[],this.runChildNodes(r.keywords,e)}},{key:"readwmcKeyword",value:function(t,e){t.push(RN.getChildValue(e))}},{key:"readwmcLogoURL",value:function(t,e){t.logo={width:e.getAttribute("width"),height:e.getAttribute("height"),format:e.getAttribute("format"),href:this.getOnlineResource_href(e)}}},{key:"readwmcDescriptionURL",value:function(t,e){t.descriptionURL=this.getOnlineResource_href(e)}},{key:"readwmcContactInformation",value:function(t,e){var r=t,n={};this.runChildNodes(n,e),r.contactInformation=n}},{key:"readwmcContactPersonPrimary",value:function(t,e){var r=t,n={};this.runChildNodes(n,e),r.personPrimary=n}},{key:"readwmcContactPerson",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.person=n)}},{key:"readwmcContactOrganization",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.organization=n)}},{key:"readwmcContactPosition",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.position=n)}},{key:"readwmcContactAddress",value:function(t,e){var r=t,n={};this.runChildNodes(n,e),r.contactAddress=n}},{key:"readwmcAddressType",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.type=n)}},{key:"readwmcAddress",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.address=n)}},{key:"readwmcCity",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.city=n)}},{key:"readwmcStateOrProvince",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.stateOrProvince=n)}},{key:"readwmcPostCode",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.postcode=n)}},{key:"readwmcCountry",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.country=n)}},{key:"readwmcContactVoiceTelephone",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.phone=n)}},{key:"readwmcContactFacsimileTelephone",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.fax=n)}},{key:"readwmcContactElectronicMailAddress",value:function(t,e){var r=t,n=RN.getChildValue(e);n&&(r.email=n)}},{key:"readwmcDataURL",value:function(t,e){t.dataURL=this.getOnlineResource_href(e)}},{key:"readwmcDimensionList",value:function(t,e){var r=t;r.dimensions={},this.runChildNodes(r.dimensions,e)}},{key:"readwmcDimension",value:function(t,e){var r=t,n={name:e.getAttribute("name").toLowerCase(),units:e.getAttribute("units")||"",unitSymbol:e.getAttribute("unitSymbol")||"",userValue:e.getAttribute("userValue")||"",nearestValue:"1"===e.getAttribute("nearestValue"),multipleValues:"1"===e.getAttribute("multipleValues"),current:"1"===e.getAttribute("current"),default:e.getAttribute("default")||""},i=RN.getChildValue(e);n.values=i.split(","),r[n.name]=n}}])&&kA(e.prototype,r),n&&kA(e,n),o}(RN);function BA(t){return(BA="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function zA(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r0)||Object(h.d)(l,(function(r){return e.Identifier==r.TileMatrix||-1===e.Identifier.indexOf(":")&&t.Identifier+":"+e.Identifier===r.TileMatrix}))){i.push(e.Identifier);var r=28e-5*e.ScaleDenominator/p,u=e.TileWidth,c=e.TileHeight;d?o.push([e.TopLeftCorner[1],e.TopLeftCorner[0]]):o.push(e.TopLeftCorner),n.push(r),a.push(u==c?u:[u,c]),s.push([e.MatrixWidth,e.MatrixHeight])}})),new dk({extent:e,origins:o,resolutions:n,matrixIds:i,tileSizes:a,sizes:s})}var mk=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),_k=function(t){function e(e){var r=this,n=void 0===e.imageSmoothing||e.imageSmoothing;void 0!==e.interpolate&&(n=e.interpolate);var i=void 0!==e.requestEncoding?e.requestEncoding:hk,o=e.tileGrid,a=e.urls;return void 0===a&&void 0!==e.url&&(a=Nf(e.url)),(r=t.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,interpolate:n,projection:e.projection,reprojectionErrorThreshold:e.reprojectionErrorThreshold,tileClass:e.tileClass,tileGrid:o,tileLoadFunction:e.tileLoadFunction,tilePixelRatio:e.tilePixelRatio,urls:a,wrapX:void 0!==e.wrapX&&e.wrapX,transition:e.transition,zDirection:e.zDirection})||this).version_=void 0!==e.version?e.version:"1.0.0",r.format_=void 0!==e.format?e.format:"image/jpeg",r.dimensions_=void 0!==e.dimensions?e.dimensions:{},r.layer_=e.layer,r.matrixSet_=e.matrixSet,r.style_=e.style,r.requestEncoding_=i,r.setKey(r.getKeyForDimensions_()),a&&a.length>0&&(r.tileUrlFunction=Lf(a.map(r.createFromWMTSTemplate.bind(r)))),r}return mk(e,t),e.prototype.setUrls=function(t){this.urls=t;var e=t.join("\n");this.setTileUrlFunction(Lf(t.map(this.createFromWMTSTemplate.bind(this))),e)},e.prototype.getDimensions=function(){return this.dimensions_},e.prototype.getFormat=function(){return this.format_},e.prototype.getLayer=function(){return this.layer_},e.prototype.getMatrixSet=function(){return this.matrixSet_},e.prototype.getRequestEncoding=function(){return this.requestEncoding_},e.prototype.getStyle=function(){return this.style_},e.prototype.getVersion=function(){return this.version_},e.prototype.getKeyForDimensions_=function(){var t=0,e=[];for(var r in this.dimensions_)e[t++]=r+"-"+this.dimensions_[r];return e.join("/")},e.prototype.updateDimensions=function(t){Object(ii.a)(this.dimensions_,t),this.setKey(this.getKeyForDimensions_())},e.prototype.createFromWMTSTemplate=function(t){var e=this.requestEncoding_,r={layer:this.layer_,style:this.style_,tilematrixset:this.matrixSet_};e==hk&&Object(ii.a)(r,{Service:"WMTS",Request:"GetTile",Version:this.version_,Format:this.format_}),t=e==hk?Yf(t,r):t.replace(/\{(\w+?)\}/g,(function(t,e){return e.toLowerCase()in r?r[e.toLowerCase()]:t}));var n=this.tileGrid,i=this.dimensions_;return function(r,o,a){if(r){var s={TileMatrix:n.getMatrixId(r[0]),TileCol:r[1],TileRow:r[2]};Object(ii.a)(s,i);var l=t;return l=e==hk?Yf(l,s):l.replace(/\{(\w+?)\}/g,(function(t,e){return s[e]}))}}},e}(Uf);function vk(t,e){var r=t.Contents.Layer,n=Object(h.d)(r,(function(t,r,n){return t.Identifier==e.layer}));if(null===n)return null;var i,o=t.Contents.TileMatrixSet;(i=n.TileMatrixSetLink.length>1?"projection"in e?Object(h.e)(n.TileMatrixSetLink,(function(t,r,n){var i=Object(h.d)(o,(function(e){return e.Identifier==t.TileMatrixSet})).SupportedCRS,a=Object(u.o)(i),s=Object(u.o)(e.projection);return a&&s?Object(u.j)(a,s):i==e.projection})):Object(h.e)(n.TileMatrixSetLink,(function(t,r,n){return t.TileMatrixSet==e.matrixSet})):0)<0&&(i=0);var a=n.TileMatrixSetLink[i].TileMatrixSet,s=n.TileMatrixSetLink[i].TileMatrixSetLimits,l=n.Format[0];"format"in e&&(l=e.format),(i=Object(h.e)(n.Style,(function(t,r,n){return"style"in e?t.Title==e.style:t.isDefault})))<0&&(i=0);var c=n.Style[i].Identifier,f={};"Dimension"in n&&n.Dimension.forEach((function(t,e,r){var n=t.Identifier,i=t.Default;void 0===i&&(i=t.Value[0]),f[n]=i}));var p,d=t.Contents.TileMatrixSet,g=Object(h.d)(d,(function(t,e,r){return t.Identifier==a})),y=g.SupportedCRS;if(y&&(p=Object(u.o)(y)),"projection"in e){var m=Object(u.o)(e.projection);m&&(p&&!Object(u.j)(m,p)||(p=m))}var _=!1,v="ne"==p.getAxisOrientation().substr(0,2),b=g.TileMatrix[0],x={MinTileCol:0,MinTileRow:0,MaxTileCol:b.MatrixWidth-1,MaxTileRow:b.MatrixHeight-1};if(s){x=s[s.length-1];var w=Object(h.d)(g.TileMatrix,(function(t){return t.Identifier===x.TileMatrix||g.Identifier+":"+t.Identifier===x.TileMatrix}));w&&(b=w)}var E=28e-5*b.ScaleDenominator/p.getMetersPerUnit(),O=v?[b.TopLeftCorner[1],b.TopLeftCorner[0]]:b.TopLeftCorner,S=b.TileWidth*E,I=b.TileHeight*E,C=g.BoundingBox,T=[O[0]+S*x.MinTileCol,O[1]-I*(1+x.MaxTileRow),O[0]+S*(1+x.MaxTileCol),O[1]-I*x.MinTileRow];if(void 0!==C&&!Object(mt.h)(C,T)){var P=n.WGS84BoundingBox,R=Object(u.o)("EPSG:4326").getExtent();if(T=C,P)_=P[0]===R[0]&&P[2]===R[2];else{var L=Object(u.A)(C,g.SupportedCRS,"EPSG:4326");_=L[0]-1e-10<=R[0]&&L[2]+1e-10>=R[2]}}var M=yk(g,T,s),N=[],A=e.requestEncoding;if(A=void 0!==A?A:"","OperationsMetadata"in t&&"GetTile"in t.OperationsMetadata)for(var k=t.OperationsMetadata.GetTile.DCP.HTTP.Get,j=0,F=k.length;j0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1?arguments[1]:void 0;return xk(this,o),(t=i.call(this,e,r)).facadeLayer_=null,t.capabilitiesOptionsPromise=null,t.getCapabilitiesPromise_=e.capabilities||null,t.optionsFromGetFeatureInfoUrl_={version:"1.0.0",style:"default",format:"image/jpeg"},t}return e=o,(r=[{key:"addTo",value:function(t){var e=this;if(this.map=t,this.fire(Cl),!yD(this.options)&&!yD(this.options.minScale)&&!yD(this.options.maxScale)){var r=this.map.getMapImpl().getView().getProjection().getUnits();this.options.minResolution=LD(this.options.minScale,r),this.options.maxResolution=LD(this.options.maxScale,r)}var n=this.getCapabilitiesOptions_();n instanceof Promise?n.then((function(t){return e.addLayer_(t)})):this.addLayer_(n)}},{key:"setResolutions",value:function(t){var e=this;if(_D(this.vendorOptions_.source)){var r=this.facadeLayer_.getMaxExtent(),n=Object(u.o)(this.map.getProjection().code);this.getCapabilities().then((function(i){var o=i.getMatrixSet(e.name),a=i.getMatrixIds(e.name),s=i.getFormat(e.name),l={url:e.url,layer:e.name,matrixSet:o,format:s,projection:n,tileGrid:new gk({origin:Object(mt.v)(r),resolutions:t,matrixIds:a}),extent:r},u=e.options.crossOrigin;dD(u)||(l.crossOrigin=u);var c=new _k(l);e.ol3Layer.setSource(c)}))}}},{key:"setVisible",value:function(t){var e=this;if(this.visibility=t,!0===t&&!0!==this.transparent){this.map.getBaseLayers().filter((function(t){return!t.equals(e)&&t.isVisible()})).forEach((function(t){return t.setVisible(!1)})),_D(this.ol3Layer)||this.ol3Layer.setVisible(t);var r=this.map.getBbox();_D(r)||this.map.setBbox(r,{nearest:!0})}else _D(this.ol3Layer)||this.ol3Layer.setVisible(t)}},{key:"addLayer_",value:function(t){var e=this.facadeLayer_.getMaxExtent(),r=t,n=this.options.minResolution,i=this.options.maxResolution;r.format=this.options.format||t.format;var o=this.options.crossOrigin;dD(o)||(r.crossOrigin=o);var a=new _k(GD(r,{extent:e},!0));this.ol3Layer=new Mc.a(GD({visible:this.options.visibility,source:a,minResolution:n,maxResolution:i},this.vendorOptions_,!0));var s=this.zIndex_;this.map.getMapImpl().addLayer(this.ol3Layer),null!==s&&this.setZIndex(s),this.setVisible(this.visibility),this.ol3Layer.set("animated",!0),this.fire(Cl,this)}},{key:"setMaxExtent",value:function(t){this.getOLLayer().setExtent(t)}},{key:"getCapabilitiesOptions_",value:function(){var t=this;return _D(this.capabilitiesOptionsPromise)&&(this.capabilitiesOptionsPromise=this.getCapabilities(),this.capabilitiesOptionsPromise instanceof Promise&&(this.capabilitiesOptionsPromise=this.capabilitiesOptionsPromise.then((function(e){var r=t.name,n=t.matrixSet;_D(n)&&(n=t.map.getProjection().code);var i=t.facadeLayer_.getMaxExtent(),o=vk(e,{layer:r,matrixSet:n,extent:i});return o.tileGrid.extent=i,o})))),this.capabilitiesOptionsPromise}},{key:"getCapabilities",value:function(){var t=this;return _D(this.getCapabilitiesPromise_)&&(this.getCapabilitiesPromise_=new Promise((function(e,r){var n=PD(t.url),i=new kt;uD(n).then((function(r){var n=r.xml,o=i.read(n);e.call(t,o)}))}))),this.getCapabilitiesPromise_}},{key:"getMinResolution",value:function(){return this.options.minResolution}},{key:"getMaxResolution",value:function(){return this.options.maxResolution}},{key:"setFacadeObj",value:function(t){this.facadeLayer_=t}},{key:"destroy",value:function(){var t=this.map.getMapImpl();_D(this.ol3Layer)||(t.removeLayer(this.ol3Layer),this.ol3Layer=null),this.map=null}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.url===t.url,e=e&&this.name===t.name,e=e&&this.matrixSet===t.matrixSet),e}},{key:"setOptionsGetFeatureInfoUrl",value:function(t){var e=t.version,r=t.style,n=t.format;dD(e)||(this.optionsFromGetFeatureInfoUrl_.version=e),dD(r)||(this.optionsFromGetFeatureInfoUrl_.style=r),dD(n)||(this.optionsFromGetFeatureInfoUrl_.format=n)}},{key:"getOptionsGetFeatureInfoUrl",value:function(){return this.optionsFromGetFeatureInfoUrl_}},{key:"getGetFeatureInfoUrl",value:function(t,e,r){var n=this.getTileColTileRow(t,e),i=this.getRelativeTileCoordInPixel_(t,e),o=this.optionsFromGetFeatureInfoUrl_.version,a=this.name,s=this.optionsFromGetFeatureInfoUrl_.style,l=this.optionsFromGetFeatureInfoUrl_.format,u=this.ol3Layer.getSource().getMatrixSet(),c=e,h=r,f=n[0],p=n[1],d=i[0],g=i[1];return ID(this.url,{service:"WMTS",request:"GetFeatureInfo",version:o,layer:a,style:s,format:l,tilematrixset:u,tilematrix:c,tilerow:p,tilecol:f,J:g,I:d,infoFormat:h})}},{key:"getTileColTileRow",value:function(t,e){var r=null;if(!_D(this.ol3Layer)){var n=this.ol3Layer.getSource();_D(n)||(r=n.tileGrid.getTileCoordForCoordAndZ(t,e))}return r.slice(1)}},{key:"getRelativeTileCoordInPixel_",value:function(t,e){var r;if(!_D(this.ol3Layer)){var n=this.ol3Layer.getSource();if(!_D(n)){var i=n.tileGrid,o=i.getTileCoordForCoordAndZ(t,e),a=i.getTileCoordExtent(o,[]),s=i.getResolution(o[0]);r=[Math.floor((t[0]-a[0])/s),Math.floor((a[3]-t[1])/s)]}}return r}},{key:"cloneOLLayer",value:function(){var t=null;if(null!=this.ol3Layer){var e=this.ol3Layer.getProperties();t=new Mc.a(e)}return t}}])&&wk(e.prototype,r),n&&wk(e,n),o}(Rh);function Tk(t){return(Tk="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Pk(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Rk(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;Pk(this,o);var a=new Ck(r,n),s=Ec(t,ku);return e=i.call(this,s,a),dD(Ck)&&_l(uu("exception").wmts_method),_D(t)&&_l(uu("exception").no_param),e.matrixSet=s.matrixSet,e.legend=s.legend,e.transparent=s.transparent,e.options=r,e}return e=o,(r=[{key:"getCapabilities",value:function(){return _D(this.getCapabilitiesPromise_)&&(this.getCapabilitiesPromise_=this.getImpl().getCapabilities()),this.getCapabilitiesPromise_}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.url===t.url,e=e&&this.name===t.name,e=e&&this.matrixSet===t.matrixSet),e}},{key:"getGetFeatureInfoUrl",value:function(t,e,r){return this.getImpl().getGetFeatureInfoUrl(t,e,r)}},{key:"setOptionsGetFeatureInfoUrl",value:function(t){this.getImpl().setOptionsGetFeatureInfoUrl(t)}},{key:"getOptionsGetFeatureInfoUrl",value:function(){return this.getImpl().getOptionsGetFeatureInfoUrl()}},{key:"getTileColTileRow",value:function(t,e){return this.getImpl().getTileColTileRow(t,e)}},{key:"type",get:function(){return ku},set:function(t){dD(t)||_D(t)||t===ku||_l("El tipo de capa debe ser '".concat(ku).concat("' pero se ha especificado '").concat(t).concat("'"))}},{key:"matrixSet",get:function(){return this.getImpl().matrixSet},set:function(t){this.getImpl().matrixSet=t}},{key:"legend",get:function(){return this.getImpl().legend},set:function(t){_D(t)?this.getImpl().legend=this.name:this.getImpl().legend=t}},{key:"options",get:function(){return this.getImpl().options},set:function(t){this.getImpl().options=t}}])&&Rk(e.prototype,r),n&&Rk(e,n),o}(Lc),jk=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Fk=function(t){function e(e){var r=e||{},n=void 0===r.imageSmoothing||r.imageSmoothing;void 0!==r.interpolate&&(n=r.interpolate);var i=void 0!==r.projection?r.projection:"EPSG:3857",o=void 0!==r.tileGrid?r.tileGrid:Object(Ff.b)({extent:Object(Ff.c)(i),maxResolution:r.maxResolution,maxZoom:r.maxZoom,minZoom:r.minZoom,tileSize:r.tileSize});return t.call(this,{attributions:r.attributions,cacheSize:r.cacheSize,crossOrigin:r.crossOrigin,interpolate:n,opaque:r.opaque,projection:i,reprojectionErrorThreshold:r.reprojectionErrorThreshold,tileGrid:o,tileLoadFunction:r.tileLoadFunction,tilePixelRatio:r.tilePixelRatio,tileUrlFunction:r.tileUrlFunction,url:r.url,urls:r.urls,wrapX:void 0===r.wrapX||r.wrapX,transition:r.transition,attributionsCollapsible:r.attributionsCollapsible,zDirection:r.zDirection})||this}return jk(e,t),e}(Uf);function Dk(t){return(Dk="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Gk(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Xk(this,o);var a=new Yk(t,r,n),s=Ec(t,Fu);return e=i.call(this,s,a),dD(Yk)&&_l(uu("exception").mapbox_method),_D(t)&&_l(uu("exception").no_param),_D(s.name)&&_l(uu("exception").no_name),e.name=s.name,e.legend=s.legend,_D(s.legend)&&(e.legend=s.name),e.transparent=s.transparent,e.accessToken=s.accessToken,e.options=r,e}return e=o,(r=[{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.url===t.url,e=e&&this.name===t.name,e=e&&this.options===t.options),e}},{key:"url",get:function(){return this.getImpl().url},set:function(t){_D(t)?this.getImpl().url=M.config.MAPBOX_URL:this.getImpl().url=t}},{key:"transparent",get:function(){return this.getImpl().transparent},set:function(t){_D(t)?this.getImpl().transparent=!1:this.getImpl().transparent=t}},{key:"accessToken",get:function(){return this.getImpl().accessToken},set:function(t){_D(t)?this.getImpl().accessToken=M.config.MAPBOX_TOKEN_VALUE:this.getImpl().accessToken=t}},{key:"type",get:function(){return Fu},set:function(t){dD(t)||_D(t)||t===Fu||_l("El tipo de capa debe ser '".concat(Fu).concat("' pero se ha especificado '").concat(t).concat("'"))}}])&&Hk(e.prototype,r),n&&Hk(e,n),o}(Lc),tj=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),ej='© OpenStreetMap contributors.',rj=function(t){function e(e){var r,n=e||{},i=void 0===n.imageSmoothing||n.imageSmoothing;void 0!==n.interpolate&&(i=n.interpolate),r=void 0!==n.attributions?n.attributions:[ej];var o=void 0!==n.crossOrigin?n.crossOrigin:"anonymous",a=void 0!==n.url?n.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png";return t.call(this,{attributions:r,attributionsCollapsible:!1,cacheSize:n.cacheSize,crossOrigin:o,interpolate:i,maxZoom:void 0!==n.maxZoom?n.maxZoom:19,opaque:void 0===n.opaque||n.opaque,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileLoadFunction:n.tileLoadFunction,transition:n.transition,url:a,wrapX:n.wrapX,zDirection:n.zDirection})||this}return tj(e,t),e}(Fk);function nj(t){return(nj="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function ij(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function oj(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;return ij(this,o),(e=i.call(this,r,n)).resolutions_=null,e.facadeLayer_=null,e.hasAttributtion=!1,e.haveOSMorMapboxLayer=!1,!1===r.visibility&&(e.visibility=!1),e.zIndex_=id.Z_INDEX.OSM,e.url_=t.url,e}return e=o,(r=[{key:"setVisible",value:function(t){var e=this;if(this.visibility=t,!0===this.inRange())if(!0===t&&!0!==this.transparent){this.map.getBaseLayers().forEach((function(t){!t.equals(e)&&t.isVisible()&&t.setVisible(!1)})),_D(this.ol3Layer)||this.ol3Layer.setVisible(t);var r=this.map.getBbox();this.map.getImpl().updateResolutionsFromBaseLayer(),_D(r)||this.map.setBbox(r)}else _D(this.ol3Layer)||this.ol3Layer.setVisible(t)}},{key:"addTo",value:function(t){var e=this;this.map=t,this.fire(Cl),this.ol3Layer=new Mc.a(GD({},this.vendorOptions_,!0)),this.updateSource_(),this.map.getMapImpl().addLayer(this.ol3Layer),this.map.getImpl().getMapImpl().getControls().getArray().forEach((function(t){t instanceof za&&(e.hasAttributtion=!0)}),this),this.hasAttributtion||(this.map.getMapImpl().addControl(new za({className:"ol-attribution ol-unselectable ol-control ol-collapsed m-attribution",collapsible:!0})),this.hasAttributtion=!1),this.map.getMapImpl().updateSize();var r=this.map.getMapImpl().getSize(),n=this.map.getProjection().units;this.resolutions_=MD(this.facadeLayer_.getMaxExtent(),r,16,n),this.isVisible()&&!this.inRange()&&this.setVisible(!1),null!==this.zIndex_&&this.setZIndex(this.zIndex_),null!==this.resolutions_&&this.setResolutions(this.resolutions_);var i=!1===this.transparent||!0===this.options.animated;this.ol3Layer.set("animated",i),this.map.on(Jl,(function(){return e.updateSource_()}))}},{key:"setResolutions",value:function(t){this.resolutions_=t,this.updateSource_(t)}},{key:"updateSource_",value:function(t){if(_D(t)&&!_D(this.map)){this.map.getMapImpl().updateSize();var e=this.map.getMapImpl().getSize(),r=this.map.getProjection().units,n=M.config.ZOOM_LEVELS;this.resolutions_=MD(this.facadeLayer_.getMaxExtent(),e,n,r)}if(!_D(this.ol3Layer)&&_D(this.vendorOptions_.source)){var i=this.facadeLayer_.getMaxExtent(),o="";o=dD(this.url_)?new rj({}):new Fk({url:this.url_}),this.ol3Layer.setSource(o),this.ol3Layer.setExtent(i)}}},{key:"setFacadeObj",value:function(t){this.facadeLayer_=t}},{key:"setMaxExtent",value:function(t){this.ol3Layer.setExtent(t)}},{key:"getMinResolution",value:function(){}},{key:"getMaxResolution",value:function(){}},{key:"destroy",value:function(){var t=this,e=this.map.getMapImpl();_D(this.ol3Layer)||(e.removeLayer(this.ol3Layer),this.ol3Layer=null),this.map.getLayers().forEach((function(e){(e instanceof _j||e instanceof Qk)&&(t.haveOSMorMapboxLayer=!0)})),this.haveOSMorMapboxLayer||this.map.getImpl().getMapImpl().getControls().getArray().forEach((function(e){e instanceof za&&t.map.getImpl().getMapImpl().removeControl(e)})),this.map=null}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.url===t.url,e=e&&this.name===t.name),e}},{key:"cloneOLLayer",value:function(){var t=null;if(null!=this.ol3Layer){var e=this.ol3Layer.getProperties();t=new Mc.a(e)}return t}}])&&oj(e.prototype,r),n&&oj(e,n),o}(Rh);function hj(t){return(hj="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function fj(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function pj(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};fj(this,o);var a=t;dD(cj)&&_l(uu("exception").osm_method),_D(a)&&(a="OSM");var s=new cj(a,r,n),l=Ec(a,ju);return _D(l.name)&&(l.name="osm"),(e=i.call(this,l,s)).name=l.name,e.legend=l.legend,_D(l.legend)&&(e.legend="OpenStreetMap"),e.transparent=l.transparent,e.options=r,e}return e=o,(r=[{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.url===t.url,e=e&&this.name===t.name,e=e&&this.options===t.options),e}},{key:"transparent",get:function(){return this.getImpl().transparent},set:function(t){_D(t)?this.getImpl().transparent=!1:this.getImpl().transparent=t}},{key:"type",get:function(){return ju},set:function(t){dD(t)||_D(t)||t===ju||_l("El tipo de capa debe ser '".concat(ju).concat("' pero se ha especificado '").concat(t).concat("'"))}}])&&pj(e.prototype,r),n&&pj(e,n),o}(Lc),vj=r(45),bj=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),xj=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r,a)||this;return s.extent=null,s.format_=i,s.features_=null,s.loader_,s.projection=null,s.resolution,s.tileLoadFunction_=o,s.url_=n,s.key=n,s}return bj(e,t),e.prototype.getFormat=function(){return this.format_},e.prototype.getFeatures=function(){return this.features_},e.prototype.load=function(){this.state==Ef.a.IDLE&&(this.setState(Ef.a.LOADING),this.tileLoadFunction_(this,this.url_),this.loader_&&this.loader_(this.extent,this.resolution,this.projection))},e.prototype.onLoad=function(t,e){this.setFeatures(t)},e.prototype.onError=function(){this.setState(Ef.a.ERROR)},e.prototype.setFeatures=function(t){this.features_=t,this.setState(Ef.a.LOADED)},e.prototype.setLoader=function(t){this.loader_=t},e}(vj.a),wj=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ej=[],Oj=function(t){function e(e,r,n,i){var o=t.call(this,e,r,{transition:0})||this;return o.context_={},o.executorGroups={},o.declutterExecutorGroups={},o.loadingSourceTiles=0,o.hitDetectionImageData={},o.replayState_={},o.sourceTiles=[],o.errorTileKeys={},o.wantedResolution,o.getSourceTiles=i.bind(void 0,o),o.wrappedTileCoord=n,o}return wj(e,t),e.prototype.getContext=function(t){var e=Object(Gn.c)(t);return e in this.context_||(this.context_[e]=Object(oi.a)(1,1,Ej)),this.context_[e]},e.prototype.hasContext=function(t){return Object(Gn.c)(t)in this.context_},e.prototype.getImage=function(t){return this.hasContext(t)?this.getContext(t).canvas:null},e.prototype.getReplayState=function(t){var e=Object(Gn.c)(t);return e in this.replayState_||(this.replayState_[e]={dirty:!1,renderedRenderOrder:null,renderedResolution:NaN,renderedRevision:-1,renderedTileResolution:NaN,renderedTileRevision:-1,renderedTileZ:-1}),this.replayState_[e]},e.prototype.load=function(){this.getSourceTiles()},e.prototype.release=function(){for(var e in this.context_)Ej.push(this.context_[e].canvas),delete this.context_[e];t.prototype.release.call(this)},e}(vj.a),Sj=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),Ij=function(t){function e(e){var r=this,n=e.projection||"EPSG:3857",i=e.extent||Object(Ff.c)(n),o=e.tileGrid||Object(Ff.b)({extent:i,maxResolution:e.maxResolution,maxZoom:void 0!==e.maxZoom?e.maxZoom:22,minZoom:e.minZoom,tileSize:e.tileSize||512});return(r=t.call(this,{attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,cacheSize:e.cacheSize,interpolate:!0,opaque:!1,projection:n,state:e.state,tileGrid:o,tileLoadFunction:e.tileLoadFunction?e.tileLoadFunction:Cj,tileUrlFunction:e.tileUrlFunction,url:e.url,urls:e.urls,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition,zDirection:void 0===e.zDirection?1:e.zDirection})||this).format_=e.format?e.format:null,r.sourceTileCache=new wf.a(r.tileCache.highWaterMark),r.overlaps_=null==e.overlaps||e.overlaps,r.tileClass=e.tileClass?e.tileClass:xj,r.tileGrids_={},r}return Sj(e,t),e.prototype.getFeaturesInExtent=function(t){var e=[],r=this.tileCache;if(0===r.getCount())return e;var n=Object(Tf.b)(r.peekFirstKey())[0],i=this.tileGrid;return r.forEach((function(r){if(r.tileCoord[0]===n&&r.getState()===Ef.a.LOADED)for(var o=r.getSourceTiles(),a=0,s=o.length;a0)e([]);else{var y=c.getTileCoordExtent(n.wrappedTileCoord),m=Object(mt.D)(y),_=[(h[0]-m[0])/u,(m[1]-h[1])/u],v=n.getSourceTiles().reduce((function(t,e){return t.concat(e.getFeatures())}),[]),b=n.hitDetectionImageData[o];if(!b&&!this.animatingOrInteracting_){var x=Object(Aa.d)(c.getTileSize(c.getZForResolution(u))),w=this.renderedRotation_;b=Lv(x,[this.getRenderTransform(c.getTileCoordCenter(n.wrappedTileCoord),u,0,Rv,x[0]*Rv,x[1]*Rv,0)],v,i.getStyleFunction(),c.getTileCoordExtent(n.wrappedTileCoord),n.getReplayState(i).renderedResolution,w),n.hitDetectionImageData[o]=b}e(Mv(_,v,b))}}.bind(this))},e.prototype.handleFontsChanged=function(){var t=this.getLayer();t.getVisible()&&void 0!==this.renderedLayerRevision_&&t.changed()},e.prototype.handleStyleImageChange_=function(t){this.renderIfReadyAndVisible()},e.prototype.renderDeclutter=function(t){var e=this.context,r=e.globalAlpha;e.globalAlpha=this.getLayer().getOpacity();for(var n=t.viewHints,i=!(n[po.a.ANIMATING]||n[po.a.INTERACTING]),o=this.renderedTiles,a=0,s=o.length;a=0;--c)u[c].execute(this.context,1,this.getTileRenderTransform(l,t),t.viewState.rotation,i,void 0,t.declutterTree)}e.globalAlpha=r},e.prototype.getTileRenderTransform=function(t,e){var r=e.pixelRatio,n=e.viewState,i=n.center,o=n.resolution,a=n.rotation,s=e.size,l=Math.round(s[0]*r),u=Math.round(s[1]*r),c=this.getLayer().getSource().getTileGridForProjection(e.viewState.projection),h=t.tileCoord,f=c.getTileCoordExtent(t.wrappedTileCoord),p=c.getTileCoordExtent(h,this.tmpExtent)[0]-f[0];return Object(Un.g)(Object(Un.j)(this.inversePixelTransform.slice(),1/r,1/r),this.getRenderTransform(i,o,a,r,l,u,p))},e.prototype.renderFrame=function(e,r){var n=e.viewHints,i=!(n[po.a.ANIMATING]||n[po.a.INTERACTING]);t.prototype.renderFrame.call(this,e,r),this.renderedPixelToCoordinateTransform_=e.pixelToCoordinateTransform.slice(),this.renderedRotation_=e.viewState.rotation;var o=this.getLayer(),a=o.getRenderMode(),s=this.context,l=s.globalAlpha;s.globalAlpha=o.getOpacity();for(var u=Aj[a],c=e.viewState,h=c.rotation,f=o.getSource(),p=f.getTileGridForProjection(c.projection).getZForResolution(c.resolution,f.zDirection),d=this.renderedTiles,g=[],y=[],m=d.length-1;m>=0;--m){var _=d[m],v=_.executorGroups[Object(Gn.c)(o)].filter((function(t){return t.hasExecutors(u)}));if(0!==v.length){for(var b=this.getTileRenderTransform(_,e),x=_.tileCoord[0],w=!1,E=v[0].getClipCoords(b),O=0,S=g.length;O>3)?r.readString():2===t?r.readFloat():3===t?r.readDouble():4===t?r.readVarint64():5===t?r.readVarint():6===t?r.readSVarint():7===t?r.readBoolean():null;e.values.push(n)}}function qj(t,e,r){if(1==t)e.id=r.readVarint();else if(2==t)for(var n=r.readVarint()+r.pos;r.pos>3}a--,1===o||2===o?(s+=t.readSVarint(),l+=t.readSVarint(),1===o&&u>c&&(n.push(u),c=u),r.push(s,l),u+=2):7===o?u>c&&(r.push(r[c],r[c+1]),u+=2):Object(Ui.a)(!1,59)}u>c&&(n.push(u),c=u)},e.prototype.createFeature_=function(t,e,r){var n,i=e.type;if(0===i)return null;var o,a=e.properties;this.idProperty_?(o=a[this.idProperty_],delete a[this.idProperty_]):o=e.id,a[this.layerName_]=e.layer.name;var s=[],l=[];this.readRawGeometry_(t,e,s,l);var u=function(t,e){var r;1===t?r=1===e?fo.a.POINT:fo.a.MULTI_POINT:2===t?r=1===e?fo.a.LINE_STRING:fo.a.MULTI_LINE_STRING:3===t&&(r=fo.a.POLYGON);return r}(i,l.length);if(this.featureClass_===lh)(n=new this.featureClass_(u,s,l,a,o)).transform(r.dataProjection);else{var c=void 0;if(u==fo.a.POLYGON){var h=ba(s,l);c=h.length>1?new ih(s,Io,h):new Oa(s,Io,l)}else c=u===fo.a.POINT?new aa(s,Io):u===fo.a.LINE_STRING?new Qc(s,Io):u===fo.a.POLYGON?new Oa(s,Io,l):u===fo.a.MULTI_POINT?new Hc(s,Io):u===fo.a.MULTI_LINE_STRING?new eh(s,Io,l):null;n=new(0,this.featureClass_),this.geometryName_&&n.setGeometryName(this.geometryName_);var f=LI(c,!1,r);n.setGeometry(f),void 0!==o&&n.setId(o),n.setProperties(a,!0)}return n},e.prototype.getType=function(){return vg},e.prototype.readFeatures=function(t,e){var r=this.layers_,n=this.adaptOptions(e),i=Object(u.o)(n.dataProjection);i.setWorldExtent(n.extent),n.dataProjection=i;var o=new Uj.a(t),a=o.readFields(zj,{}),s=[];for(var l in a)if(!r||-1!=r.indexOf(l)){var c=a[l],h=c?[0,0,c.extent,c.extent]:null;i.setExtent(h);for(var f=0,p=c.length;f0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0;iF(this,o);var s=a||new Qj(e,r,n);return t=i.call(this,e,r,n,s),dD(Qj)&&_l("La implementación usada no puede crear capas Vector"),t}return e=o,(r=[{key:"getMaxExtent",value:function(){var t=this.userMaxExtent;return _D(t)&&(t=this.map_.userMaxExtent,_D(t)&&(t=this.map_.getProjection().getExtent())),t}},{key:"calculateMaxExtent",value:function(){var t=this;return new Promise((function(e){return e(t.getMaxExtent())}))}},{key:"setStyle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.DEFAULT_OPTIONS_STYLE;aF(cF(o.prototype),"setStyle",this).call(this,t,e,r)}},{key:"getProjection",value:function(){return this.getImpl().getProjection()}},{key:"getGeometryType",value:function(){var t=null,e=this.getFeatures();if(!_D(e)){var r=e[0];_D(r)||(t=r.getType())}return t}},{key:"getFeatures",value:function(){return this.getImpl().getFeatures().map((function(t){return iR.olFeature2Facade(t)}))}},{key:"clearStyle",value:function(){this.setStyle(null)}},{key:"setFilter",value:function(){}},{key:"addFeatures",value:function(){}},{key:"removeFeatures",value:function(){}},{key:"refresh",value:function(){}},{key:"redraw",value:function(){}},{key:"toGeoJSON",value:function(){}},{key:"type",get:function(){return Uu},set:function(t){dD(t)||_D(t)||t===Uu||_l("El tipo de capa debe ser '".concat(Uu).concat("' pero se ha especificado '").concat(t).concat("'"))}}])&&oF(e.prototype,r),n&&oF(e,n),o}(Dw);fF.DEFAULT_PARAMS_STYLE={fill:{color:"#fff",opacity:.6},stroke:{color:"#827ec5",width:2}},fF.DEFAULT_OPTIONS_STYLE={point:eF(eF({},fF.DEFAULT_PARAMS_STYLE),{},{radius:5}),line:eF({},fF.DEFAULT_PARAMS_STYLE),polygon:eF({},fF.DEFAULT_PARAMS_STYLE)};var pF=fF;function dF(t){return(dF="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function gF(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:null,e=this.formater_.write(this.facadeVector_.getFeatures()),r=this.map.getProjection().code.split(":")[1],n={type:"FeatureCollection",features:e,crs:{properties:{code:r},type:"EPSG"}};bD(t)&&(n=t),this.source=n,this.updateSource_()}},{key:"setSource",value:function(t){this.source=t,_D(this.map)||this.updateSource_()}},{key:"requestFeatures_",value:function(){var t=this;return this.source?this.loadFeaturesPromise_=new Promise((function(e){e(t.formater_.read(t.source,t.map.getProjection()))})):_D(this.loadFeaturesPromise_)&&(this.loadFeaturesPromise_=new Promise((function(e){t.loader_.getLoaderFn((function(t){e(t)}))(null,null,Object(u.o)(t.map.getProjection().code))}))),this.loadFeaturesPromise_}},{key:"updateSource_",value:function(){var t=this;_D(this.vendorOptions_.source)&&this.requestFeatures_().then((function(e){t.ol3Layer&&t.ol3Layer.setSource(new Tg({loader:function(r,n,i){t.loaded_=!0,t.facadeVector_.clear(),t.facadeVector_.addFeatures(e,!1,!1),t.redraw(),t.fire(Xl,[e])}}))}))}},{key:"getFeaturesExtentPromise",value:function(t,e){var r=this;return new Promise((function(n){var i=r.map.getProjection().code;if(!0===r.isLoaded()){var o=r.getFeatures(t,e),a=wh.getFeaturesExtent(o,i);n(a)}else r.requestFeatures_().then((function(t){var e=wh.getFeaturesExtent(t,i);n(e)}))}))}},{key:"isLoaded",value:function(){return this.loaded_}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=e&&this.name===t.name,e=e&&this.extract===t.extract),e}}])&&wF(e.prototype,r),n&&wF(e,n),o}(kx);function PF(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function RF(t){for(var e=1;e1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;NF(this,o);var a=new TF(t,r,n);return e=i.call(this,t,r,void 0,a),dD(TF)&&_l(uu("exception").geojsonlayer_method),_D(t)&&_l(uu("exception").no_param),xD(t)?e.url=t:mD(t)?e.source=t:(e.url=t.url,e.name=t.name,e.source=t.source,_D(t.crs)||(_D(e.source)&&(e.source={type:"FeatureCollection",features:[]}),e.source.crs={type:"EPSG",properties:{code:t.crs}})),e.options=r,e}return e=o,(r=[{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=this.name===t.name,e=e&&this.extract===t.extract),e}},{key:"setSource",value:function(t){this.source=t,this.getImpl().refresh(t)}},{key:"setStyle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.DEFAULT_OPTIONS_STYLE;kF(GF(o.prototype),"setStyle",this).call(this,t,e,r)}},{key:"type",get:function(){return Du},set:function(t){dD(t)||_D(t)||t===Du||_l("El tipo de capa debe ser '".concat(Du).concat("' pero se ha especificado '").concat(t).concat("'"))}},{key:"source",get:function(){return this.getImpl().source},set:function(t){this.getImpl().source=t}}])&&AF(e.prototype,r),n&&AF(e,n),o}(Dw);UF.DEFAULT_PARAMS={fill:{color:"rgba(255, 255, 255, 0.4)",opacity:.4},stroke:{color:"#3399CC",width:1.5}},UF.DEFAULT_OPTIONS_STYLE={point:RF(RF({},UF.DEFAULT_PARAMS),{},{radius:5}),line:RF({},UF.DEFAULT_PARAMS),polygon:RF({},UF.DEFAULT_PARAMS)};var BF=UF;function zF(t){return(zF="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function VF(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function qF(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{};VF(this,o);var n=new ZP(t);e=i.call(this);var a=new id(n.container,ZF(e),r);if(e.setImpl(a),_D(t)&&_l(uu("exception").no_param),dD(id)&&_l(uu("exception").constructor_impl),e._panels=[],e._plugins=[],e._areasContainer=null,e.popup_=[],e._defaultProj=!0,e.panel={LEFT:null,RIGHT:"null"},e._userZoom=null,e.userCenter_=null,e._finishedInitCenter=!0,e._finishedMaxExtent=!0,e._finishedMapImpl=!1,e._finishedMap=!1,e.centerFeature_=null,e.drawLayer_=null,e.userMaxExtent=null,e.ticket_=null,n.container.classList.add("m-mapea-container"),_D(n.bgColorContainer)||e.setBGColorContainer(n.bgColorContainer),a.on(Hl,(function(){e._finishedMapImpl=!0,e._checkCompleted()})),e.createMainPanels_(),e.featuresHandler_=new _R,e.featuresHandler_.addTo(ZF(e)),e.featuresHandler_.activate(),e.drawLayer_=new Dw({name:"__draw__"},{displayInLayerSwitcher:!1}),e.drawLayer_.setStyle(new q_(o.DRAWLAYER_STYLE)),e.drawLayer_.setZIndex(id.Z_INDEX.WFS+999),e.addLayers(e.drawLayer_),_D(n.projection)?e.setProjection(M.config.DEFAULT_PROJ,!0):e.setProjection(n.projection),_D(n.bbox)||e.setBbox(n.bbox),_D(n.resolutions)||e.setResolutions(n.resolutions),!_D(n.maxExtent)){var s=_D(n.zoom)&&_D(n.bbox);e.setMaxExtent(n.maxExtent,s)}if(_D(n.wmc)||e.addWMC(n.wmc),_D(n.layers)||e.addLayers(n.layers),_D(n.wms)||e.addWMS(n.wms),_D(n.wmts)||e.addWMTS(n.wmts),_D(n.kml)||e.addKML(n.kml),_D(n.controls)?e.addControls("panzoom"):e.addControls(n.controls),!_D(n.getfeatureinfo))if("plain"!==n.getfeatureinfo&&"html"!==n.getfeatureinfo&&"gml"!==n.getfeatureinfo)Ux(uu("dialog").getfeatureinfo_type);else{var l=new cP(n.getfeatureinfo);e.addControls(l)}return _D(n.wmc)&&_D(n.layers)&&e.addWMC(M.config.predefinedWMC.predefinedNames[0]),_D(n.center)||e.setCenter(n.center),_D(n.zoom)?_D(n.bbox)&&e.setZoom(0):e.setZoom(n.zoom),_D(n.rotation)||e.once(Hl,(function(){e.setRotation(n.rotation)})),_D(n.label)||e.addLabel(n.label),_D(n.ticket)||e.setTicket(n.ticket),_D(n.bbox)&&_D(n.zoom)&&_D(n.center)&&e.zoomToMaxExtent(!0),_D(n.center)&&_D(n.bbox)&&(e._finishedInitCenter=!1,e.getInitCenter_().then((function(t){_D(e.userCenter_)&&e.setCenter(t),e._finishedInitCenter=!0,e._checkCompleted()}))),e}return e=o,n=[{key:"LAYER_SORT",value:function(t,e){return _D(t)||_D(e)?0:t.getZIndex()-e.getZIndex()}}],(r=[{key:"getLayers",value:function(t){var e=t;dD(id.prototype.getLayers)&&_l(uu("exception").getlayers_method),yD(e)?e=[]:mD(e)||(e=[e]);var r=[];return e.length>0&&(r=e.map(Ec)),this.getImpl().getLayers(r).sort(o.LAYER_SORT)}},{key:"getRootLayers",value:function(t){return this.getLayers(t).filter((function(t){return _D(t.getLayerGroup())}))}},{key:"getBaseLayers",value:function(){return dD(id.prototype.getBaseLayers)&&_l(uu("exception").getbaselayers_method),this.getImpl().getBaseLayers().sort(o.LAYER_SORT)}},{key:"getFeatureHandler",value:function(){return this.featuresHandler_}},{key:"addLayers",value:function(t){var e=this,r=t;if(!_D(r)){dD(id.prototype.addLayers)&&_l(uu("exception").addlayers_method),mD(r)||(r=[r]);var n=r.map((function(t){var r;if(t instanceof Lc)r=t;else{var n=Ec(t);if(_D(n.type))Ux(uu("dialog").invalid_type_layer);else switch(n.type){case"WFS":r=new MA(t,{style:n.style});break;case"WMC":r=new ck(t);break;case"WMS":r=new Ap(t);break;case"GeoJSON":r=new BF(n,{style:n.style});break;case"OSM":r=new _j(t);break;case"Mapbox":r=new Qk(t);break;case"KML":r=new nN(t);break;case"Vector":r=new Dw(t);break;case"WMTS":r=new kk(t);break;case"MVT":r=new pF(n);break;default:Ux(uu("dialog").invalid_type_layer)}}return r instanceof Dw&&!(r instanceof MA)&&e.featuresHandler_.addLayer(r),r.setMap(e),r}));this.getImpl().addLayers(n),this.fire(Pl,[n])}return this}},{key:"removeLayers",value:function(t){var e=this;if(!_D(t)){dD(id.prototype.removeLayers)&&_l(uu("exception").removelayers_method);var r=this.getLayers(t);r.forEach((function(t){t instanceof Dw&&e.featuresHandler_.removeLayer(t)})),this.getImpl().removeLayers(r)}return this}},{key:"getLayerGroup",value:function(){return dD(id.prototype.getLayerGroups)&&_l("La implementación usada no posee el método getLayerGroups"),this.getImpl().getLayerGroups().sort(o.LAYER_SORT)}},{key:"addLayerGroup",value:function(t){var e=t;return yD(e)&&_l("No ha especificado ningun grupo"),dD(id.prototype.addLayerGroups)&&_l("La implementación usada no posee el método addLayerGroups"),mD(e)||(e=[e]),this.getImpl().addLayerGroups(e),this}},{key:"removeLayerGroup",value:function(t){return yD(t)&&_l("No ha especificado ningun grupo a eliminar"),dD(this.getImpl().removeLayerGroups)&&_l("La implementación usada no posee el método removeGroups"),this.getImpl().removeLayerGroups(t),this}},{key:"getWMC",value:function(t){var e=t;dD(id.prototype.getWMC)&&_l(uu("exception").getwmc_method),yD(e)?e=[]:mD(e)||(e=[e]);var r=[];return e.length>0&&(r=e.map((function(t){return Ec(t,Lu)}))),this.getImpl().getWMC(r).sort(o.LAYER_SORT)}},{key:"addWMC",value:function(t){var e=this,r=t;if(!_D(r)){dD(id.prototype.addWMC)&&_l(uu("exception").addwmc_method),mD(r)||(r=[r]);var n=[];r.forEach((function(t){if(bD(t)&&t instanceof ck)t.setMap(e),n.push(t);else if(!(t instanceof Lc))try{var r=new ck(t,t.options);r.setMap(e),n.push(r)}catch(t){throw Ux(t.toString()),t}})),this.getImpl().addWMC(n),this.fire(Pl,[n]),this.fire(Rl,[n]);var i=this.getWMC();null==i.filter((function(t){return!0===t.selected}))[0]&&i[0].select(),i.length>1&&(this.removeControls("wmcselector"),this.addControls(new Ld))}return this}},{key:"refreshWMCSelectorControl",value:function(){this.removeControls("wmcselector"),1===this.getWMC().length?this.getWMC()[0].select():this.getWMC().length>1&&(this.addControls(new Ld),null==this.getWMC().filter((function(t){return!0===t.selected}))[0]&&this.getWMC()[0].select())}},{key:"removeWMC",value:function(t){if(!_D(t)){dD(id.prototype.removeWMC)&&_l(uu("exception").removewmc_method);var e=this.getWMC(t);e.length>0&&this.getImpl().removeWMC(e)}return this}},{key:"getKML",value:function(t){var e=t;dD(id.prototype.getKML)&&_l(uu("exception").getkml_method),yD(e)?e=[]:mD(e)||(e=[e]);var r=[];return e.length>0&&(r=e.map((function(t){return Ec(t,Mu)}))),this.getImpl().getKML(r).sort(o.LAYER_SORT)}},{key:"addKML",value:function(t){var e=this,r=t;if(!_D(r)){dD(id.prototype.addKML)&&_l(uu("exception").addkml_method),mD(r)||(r=[r]);var n=[];r.forEach((function(t){var r;bD(t)&&t instanceof nN?r=t:t instanceof Lc||(r=new nN(t,t.options)),!0===r.extract&&e.featuresHandler_.addLayer(r),n.push(r)})),this.getImpl().addKML(n),this.fire(Pl,[n]),this.fire(Ll,[n])}return this}},{key:"removeKML",value:function(t){var e=this;if(!_D(t)){dD(id.prototype.removeKML)&&_l(uu("exception").removekml_method);var r=this.getKML(t);r.length>0&&(r.forEach((function(t){e.featuresHandler_.removeLayer(t)})),this.getImpl().removeKML(r))}return this}},{key:"getWMS",value:function(t){var e=t;dD(id.prototype.getWMS)&&_l(uu("exception").getwms_method),yD(e)?e=[]:mD(e)||(e=[e]);var r=[];return e.length>0&&(r=e.map((function(t){return Ec(t,Nu)}))),this.getImpl().getWMS(r).sort(o.LAYER_SORT)}},{key:"addWMS",value:function(t){var e=this,r=t;if(!_D(r)){dD(id.prototype.addWMS)&&_l(uu("exception").addwms_method),mD(r)||(r=[r]);var n=[];r.forEach((function(t){var r=t;t instanceof Ap||(r=new Ap(t,t.options)),r.setMap(e),n.push(r)})),this.getImpl().addWMS(n),this.fire(Pl,[n]),this.fire(Ml,[n])}return this}},{key:"removeWMS",value:function(t){if(!_D(t)){dD(id.prototype.removeWMS)&&_l(uu("exception").removewms_method);var e=this.getWMS(t);e.length>0&&this.getImpl().removeWMS(e)}return this}},{key:"getWFS",value:function(t){var e=t;dD(id.prototype.getWFS)&&_l(uu("exception").getwfs_method),yD(e)?e=[]:mD(e)||(e=[e]);var r=[];return e.length>0&&(r=e.map((function(t){return Ec(t,Au)}))),this.getImpl().getWFS(r).sort(o.LAYER_SORT)}},{key:"getGeoJSON",value:function(t){var e=t;return dD(id.prototype.getGeoJSON)&&_l(uu("exception").getgeojson_method),yD(e)?e=[]:mD(e)||(e=[e]),this.getImpl().getGeoJSON(e).sort(o.LAYER_SORT)}},{key:"addWFS",value:function(t){var e=this,r=t;if(!_D(r)){dD(id.prototype.addWFS)&&_l(uu("exception").addwfs_method),mD(r)||(r=[r]);var n=[];r.forEach((function(t){var r;if(bD(t)&&t instanceof MA)r=t;else if(!(t instanceof Lc))try{r=new MA(t,t.options)}catch(t){throw Ux(t.toString()),t}e.featuresHandler_.addLayer(r),n.push(r)})),this.getImpl().addWFS(n),this.fire(Pl,[n]),this.fire(Nl,[n])}return this}},{key:"removeWFS",value:function(t){var e=this;if(!_D(t)){dD(id.prototype.removeWFS)&&_l(uu("exception").removewfs_method);var r=this.getWFS(t);r.length>0&&(r.forEach((function(t){e.featuresHandler_.removeLayer(t)})),this.getImpl().removeWFS(r))}return this}},{key:"getWMTS",value:function(t){var e=t;dD(id.prototype.getWMTS)&&_l(uu("exception").getwmts_method),yD(e)?e=[]:mD(e)||(e=[e]);var r=[];return e.length>0&&(r=e.map((function(t){return Ec(t,ku)}))),this.getImpl().getWMTS(r).sort(o.LAYER_SORT)}},{key:"addWMTS",value:function(t){var e=this,r=t;if(!_D(r)){dD(id.prototype.addWMTS)&&_l(uu("exception").addwmts_method),mD(r)||(r=[r]);var n=[];r.forEach((function(t){if(bD(t)&&t instanceof kk)t.setMap(e),n.push(t);else if(!(t instanceof Lc)){var r=new kk(t,t.options);r.setMap(e),n.push(r)}})),this.getImpl().addWMTS(n),this.fire(Pl,[n]),this.fire(Fl,[n])}return this}},{key:"removeWMTS",value:function(t){if(!_D(t)){dD(id.prototype.removeWMTS)&&_l(uu("exception").removewmts_method);var e=this.getWMTS(t);e.length>0&&this.getImpl().removeWMTS(e)}return this}},{key:"getMVT",value:function(t){var e=t;dD(id.prototype.getMVT)&&_l("La implementación usada no posee el método getWFS"),yD(e)?e=[]:mD(e)||(e=[e]);var r=[];return e.length>0&&(r=e.map((function(t){return Ec(t,Uu)}))),this.getImpl().getMVT(r).sort(o.LAYER_SORT)}},{key:"removeMVT",value:function(t){var e=this;if(!_D(t)){dD(id.prototype.removeMVT)&&_l("La implementación usada no posee el método removeWFS");var r=this.getMVT(t);r.length>0&&(r.forEach((function(t){e.featuresHandler_.removeLayer(t)})),this.getImpl().removeMVT(r))}return this}},{key:"addMVT",value:function(t){var e=t;if(!_D(e)){dD(id.prototype.addMVT)&&_l("La implementación usada no posee el método addWFS"),mD(e)||(e=[e]);var r=[];e.forEach((function(t){var e;if(bD(t)&&t instanceof pF)e=t;else if(!(t instanceof Lc))try{e=new pF(t,t.options)}catch(t){throw Ux(t.toString()),t}r.push(e)})),this.getImpl().addMVT(r),this.fire(Pl,[r]),this.fire(Al,[r])}return this}},{key:"getControls",value:function(t){var e=t;return dD(id.prototype.getControls)&&_l(uu("exception").getcontrols_method),yD(e)?e=[]:mD(e)||(e=[e]),this.getImpl().getControls(e)}},{key:"addControls",value:function(t){var e=this,r=t;if(!_D(r)){dD(id.prototype.addControls)&&_l(uu("exception").addcontrols_method),mD(r)||(r=[r]);var n=[];r.forEach((function(t){var r=function(t){var e=null;if(xD(t)){var r,n=OD(t),i=(CP(r={},cP.NAME,new cP("html")),CP(r,Hw.NAME,new Hw),CP(r,CE.NAME,new CE),CP(r,TS.NAME,new TS),CP(r,hI.NAME,new hI),CP(r,QS.NAME,new QS({toggleDelay:400})),CP(r,PI.NAME,new PI),CP(r,Ru.NAME,new Ru),CP(r,_O.NAME,new _O),CP(r,HE.NAME,new HE),CP(r,"".concat(HE.Name,"*true"),new HE({exactScale:!0})),CP(r,QO.NAME,new QO),CP(r,Ld.NAME,new Ld),r);if(!(n in i)){var o=FD([M.config.MAPEA_URL,"/api/actions/controls"]);Ux("El control ".concat(n," no está definido. Consulte los controles disponibles aquí'))}e=i[n]}else t instanceof yu?e=t:_l("El control añadido no es válido.");return e}(t),i=AP(r,e);e.hasControl(r)||(_D(i)?r.addTo(e):(i.addControls(r),e.addPanels(i)),n.push(r))})),this.getImpl().addControls(n)}}},{key:"hasControl",value:function(t){var e=t;t instanceof yu&&(e=t.name);var r=this.getControls().find((function(t){return t.name===e})),n=!_D(r);return n}},{key:"removeControls",value:function(t){_D(t)&&_l(uu("exception").remove_control),dD(id.prototype.removeControls)&&_l(uu("exception").removecontrol_method);var e=this.getControls(t);return(e=[].concat(e)).length>0&&(e.forEach((function(t){_D(t.getPanel())||t.getPanel().removeControls(t)})),this.getImpl().removeControls(e)),this}},{key:"getMaxExtent",value:function(){var t=this.userMaxExtent;if(_D(t)){var e=this.getWMC().find((function(t){return t.selected}));t=_D(e)?aG(this.getLayers().filter((function(t){return"__draw__"!==t.name})).map((function(t){return t.getMaxExtent()}))):e.getMaxExtent(),_D(t)&&(t=this.getProjection().getExtent())}return t}},{key:"calculateMaxExtent",value:function(){var t=this;return new Promise((function(e){var r=t.userMaxExtent;if(_D(r)){var n=t.getWMC().find((function(t){return t.selected}));if(_D(n)){var i=t.getLayers().filter((function(t){return"__draw__"!==t.name&&t.isVisible()})).map((function(t){return t.calculateMaxExtent()}));Promise.all(i).then((function(n){r=aG(n),_D(r)&&(r=t.getProjection().getExtent()),_D(t.userMaxExtent)||(r=t.userMaxExtent),e(r)}))}else n.calculateMaxExtent().then(e)}else e(r)}))}},{key:"setMaxExtent",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];_D(t)&&this.resetMaxExtent(),dD(id.prototype.setMaxExtent)&&_l(uu("exception").setmaxextent_method);try{var r=gc(t);!mD(r)&&bD(r)&&(r=[r.x.min,r.y.min,r.x.max,r.y.max]),this.userMaxExtent=r,this.getImpl().setMaxExtent(r,e)}catch(t){throw Ux(t.toString()),t}return this}},{key:"resetMaxExtent",value:function(){var t=this;return this.userMaxExtent=null,this.calculateMaxExtent().then((function(e){var r=gc(e);t.getImpl().setMaxExtent(r,!0)})),this}},{key:"getBbox",value:function(){return dD(id.prototype.getBbox)&&_l(uu("exception").getbbox_method),this.getImpl().getBbox()}},{key:"setBbox",value:function(t,e){_D(t)&&_l(uu("exception").no_bbox),dD(id.prototype.setBbox)&&_l(uu("exception").setbbox_method);try{var r=gc(t);this.getImpl().setBbox(r,e)}catch(t){throw Ux(uu("exception").incorrect_format_bbox),t}return this}},{key:"getZoom",value:function(){return dD(id.prototype.getZoom)&&_l(uu("exception").getzoom_method),this.getImpl().getZoom()}},{key:"setZoom",value:function(t){_D(t)&&_l(uu("exception").no_zoom),dD(id.prototype.setZoom)&&_l(uu("exception").setzoom_method);try{var e=_c(t);this._userZoom=e,this.getImpl().setZoom(e)}catch(t){throw Ux(t.toString()),t}return this}},{key:"getCenter",value:function(){return dD(id.prototype.getCenter)&&_l(uu("exception").getcenter_method),this.getImpl().getCenter()}},{key:"setCenter",value:function(t){var e=this;_D(t)&&_l(uu("exception").no_center),dD(id.prototype.setCenter)&&_l(uu("exception").setcenter_method);var r=dc(t);return this.getImpl().setCenter(r),this.userCenter_=r,!0===r.draw&&(this.drawLayer_.clear(),this.centerFeature_=new mG("__mapeacenter__",{type:"Feature",geometry:{type:"Point",coordinates:[r.x,r.y]},properties:{vendor:{mapea:{click:function(t){var r=e.getLabel();_D(r)||r.show(e)}}}}}),this.drawFeatures([this.centerFeature_])),this}},{key:"getFeatureCenter",value:function(){return this.centerFeature_}},{key:"removeCenter",value:function(){this.removeFeatures(this.centerFeature_),this.centerFeature_=null,this.zoomToMaxExtent()}},{key:"getResolutions",value:function(){return dD(id.prototype.getResolutions)&&_l(uu("exception").getresolutions_method),this.getImpl().getResolutions()}},{key:"setResolutions",value:function(t){_D(t)&&_l(uu("exception").no_resolutions),dD(id.prototype.setResolutions)&&_l(uu("exception").setresolutions_method);var e=mc(t);return this.getImpl().setResolutions(e),this}},{key:"getScale",value:function(){return dD(id.prototype.getScale)&&_l(uu("exception").getscale_method),this.getImpl().getScale()}},{key:"getExactScale",value:function(){return dD(id.prototype.getExactScale)&&_l("La implementación usada no posee el método getScale"),this.getImpl().getExactScale()}},{key:"getProjection",value:function(){return dD(id.prototype.getProjection)&&_l(uu("exception").getprojection_method),this.getImpl().getProjection()}},{key:"setProjection",value:function(t,e){var r=t;_D(r)&&_l(uu("exception").no_projection),dD(id.prototype.setProjection)&&_l(uu("exception").setprojection_method);try{var n=this.getProjection();r=yc(r),n.code!==r.code&&(this.getImpl().setProjection(r),this._defaultProj=this._defaultProj&&!0===e,this.fire(Jl,[n,r]))}catch(t){Ux(t.toString()),String(t).indexOf("El formato del parámetro projection no es correcto")>=0&&this.setProjection(M.config.DEFAULT_PROJ,!0)}return this}},{key:"getPlugins",value:function(t){var e=this,r=t;yD(r)?r=[]:mD(r)||(r=[r]);var n=[];return 0===r.length?n=this._plugins:r.forEach((function(t){n=n.concat(e._plugins.filter((function(e){return t===e.name})))})),n}},{key:"addPlugin",value:function(t){return _D(t)&&_l(uu("exception").no_plugins),dD(t.addTo)&&_l(uu("exception").no_add_plugin_to_map),this._plugins.push(t),t.addTo(this),this}},{key:"removePlugins",value:function(t){var e=this,r=t;return _D(r)&&_l(uu("exception").no_plugin_to_remove),mD(r)||(r=[r]),(r=[].concat(r)).length>0&&r.forEach((function(t){t.destroy(),e._plugins=e._plugins.filter((function(e){return t.name!==e.name}))})),this}},{key:"getEnvolvedExtent",value:function(){var t=this;return new Promise((function(e){var r=t.getWMC().find((function(t){return t.selected}));if(_D(r)){var n=t.getBaseLayers().find((function(t){return t.isVisible()}));if(_D(n)){var i=t.getLayers().filter((function(t){return"__draw__"!==t.name}));Promise.all(i.map((function(t){return t.calculateMaxExtent()}))).then((function(r){var n=_D(r)?[t.getProjection().getExtent()]:r,i=aG(n);e(i)}))}else n.getMaxExtent(e)}else r.getMaxExtent(e)}))}},{key:"zoomToMaxExtent",value:function(t){var e=this;return this.calculateMaxExtent().then((function(r){(!0!==t||_D(e._userZoom))&&e.setBbox(r),e._finishedMaxExtent=!0,e._checkCompleted()})),this}},{key:"setTicket",value:function(t){return this.ticket_=t,M.config.ticket=t,this}},{key:"getTicket",value:function(){return this.ticket_}},{key:"getInitCenter_",value:function(){var t=this;return new Promise((function(e,r){t.calculateMaxExtent().then((function(t){var r;r=mD(t)?{x:(t[0]+t[2])/2,y:(t[1]+t[3])/2}:{x:(t.x.max+t.x.min)/2,y:(t.y.max+t.y.min)/2},e(r)}))}))}},{key:"destroy",value:function(){return dD(id.prototype.destroy)&&_l(uu("exception").destroy_method),this.getImpl().destroy(),this}},{key:"addLabel",value:function(t,e){var r=this,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];_D(t)&&_l(uu("exception").no_projection),dD(id.prototype.addLabel)&&_l(uu("exception").addlabel_method);var i=null,o=null,a=t,s=e;return mD(t)||(a=[t]),dD(e)||mD(e[0])?dD(e)&&(s=[]):s=[e],a.forEach((function(e,a){var l=void 0===e.panMapIfOutOfView||t.panMapIfOutOfView;if(bD(e)?(i=UD(e.text),o=e.coord):(i=UD(e),o=s[a]),o=_D(o)?r.getCenter():dc(o),_D(o))r.getInitCenter_().then((function(t){var e=new WP(i,t,l);r.getImpl().addLabel(e,n)}));else{var u=new WP(i,o,l);r.getImpl().addLabel(u,n)}})),this}},{key:"getLabel",value:function(){return this.getImpl().getLabel()}},{key:"getLabels",value:function(){return this.getImpl().getLabels()}},{key:"removeLabel",value:function(t){return this.getImpl().removeLabel(t)}},{key:"drawPoints",value:function(t){var e=t;_D(e)&&_l(uu("exception").no_point),mD(e)||(e=[e]);var r=e.map((function(t){var e={type:"Feature",geometry:{type:"Point",coordinates:[t.x,t.y]},properties:{}};return vD(t.click)&&(e.properties.vendor={mapea:{click:t.click}}),new mG(null,e)}));this.drawLayer_.addFeatures(r)}},{key:"drawFeatures",value:function(t){return this.drawLayer_.addFeatures(t),this}},{key:"removeFeatures",value:function(t){return this.drawLayer_.removeFeatures(t),this}},{key:"addPanels",value:function(t){var e=this,r=t;return _D(r)||(mD(r)||(r=[r]),r.forEach((function(t){var r=e._panels.some((function(e){return e.equals(t)}));if(t instanceof OP&&!r){e._panels.push(t);var n="div.m-area".concat(t.position),i=e._areasContainer.querySelector(n);t.addTo(e,i)}}))),this}},{key:"removePanel",value:function(t){return t.getControls().length>0&&_l(uu("exception").remove_control_from_panel),t instanceof OP&&(t.destroy(),this._panels=this._panels.filter((function(e){return!e.equals(t)}))),this}},{key:"getPanels",value:function(t){var e=this,r=t,n=[];return _D(r)?n=this._panels:(mD(r)||(r=[r]),r.forEach((function(t){e._panels.filter((function(e){return e.name===t})).forEach((function(t){_D(t)||n.push(t)}))}))),n}},{key:"createMainPanels_",value:function(){this._areasContainer=document.createElement("div"),this._areasContainer.classList.add("m-areas");var t=document.createElement("div");t.classList.add("m-area"),t.classList.add("m-top"),t.classList.add("m-left");var e=document.createElement("div");e.classList.add("m-area"),e.classList.add("m-top"),e.classList.add("m-right");var r=document.createElement("div");r.classList.add("m-area"),r.classList.add("m-bottom"),r.classList.add("m-left");var n=document.createElement("div");n.classList.add("m-area"),n.classList.add("m-bottom"),n.classList.add("m-right"),this._areasContainer.appendChild(t),this._areasContainer.appendChild(e),this._areasContainer.appendChild(r),this._areasContainer.appendChild(n),this.getContainer().appendChild(this._areasContainer)}},{key:"getContainer",value:function(){return dD(id.prototype.getContainer)&&_l(uu("exception").getcontainer_method),this.getImpl().getContainer()}},{key:"getMapImpl",value:function(){return dD(id.prototype.getMapImpl)&&_l(uu("exception").getmapimpl_method),this.getImpl().getMapImpl()}},{key:"getPopup",value:function(){return 0===this.popup_.length?null:this.popup_[0]}},{key:"getPopups",value:function(){var t=null;return 0===this.popup_.length?t=null:this.popup_.length>=1&&(t=this.popup_),t}},{key:"removePopup",value:function(t){var e=this;return dD(id.prototype.removePopup)&&_l(uu("exception").removepopup_method),_D(t)?(this.popup_.forEach((function(t){e.getImpl().removePopup(t),t.destroy()})),this.popup_=[]):mD(t)?t.forEach((function(t,r){var n=e.popup_.findIndex((function(e){return e.getId()===t.getId()}));e.getImpl().removePopup(e.popup_[n]),e.popup_[n].destroy(),e.popup_.splice(n,1)})):(this.getImpl().removePopup(t),t.destroy(),this.popup_.forEach((function(r,n){r.getId()===t.getId()&&e.popup_.splice(n,1)}))),this}},{key:"addPopup",value:function(t,e){var r=this,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];_D(t)&&_l(uu("exception").no_popup);var i=t,o=e;return mD(t)||(i=[t]),mD(e[0])||(o=[e]),i.forEach((function(t,e){n&&(r.removePopup(r.popup_),r.popup_=[]),r.popup_.push(t),t.addTo(r,o[e])})),this}},{key:"addUpClass_",value:function(t){var e=this;t.on(Cl,(function(t){3===e.getControls(["wmcselector","scale","scaleline"]).length&&e.getControls(["scaleline"])[0].getElement().classList.add("ol-scale-line-up")}))}},{key:"_checkCompleted",value:function(){this._finishedInitCenter&&this._finishedMaxExtent&&this._finishedMapImpl&&(this._finishedMap=!0,this.fire(Hl))}},{key:"on",value:function(t,e,r){var n=YF(KF(o.prototype),"on",this).call(this,t,e,r);return t===Hl&&!0===this._finishedMap&&this.fire(Hl),n}},{key:"refresh",value:function(){return!dD(this.getImpl().refresh)&&vD(this.getImpl().refresh)&&this.getImpl().refresh(),this.getLayers().forEach((function(t){return t.refresh()})),this}},{key:"isFinished",value:function(){return this._finishedMap}},{key:"getRotation",value:function(){return dD(id.prototype.getRotation)&&_l(uu("exception").no_get_rotation_method),this.getImpl().getRotation()*(180/Math.PI)}},{key:"setRotation",value:function(t){dD(id.prototype.setRotation)&&_l(uu("exception").no_set_rotation_method),this.getImpl().setRotation(t*(Math.PI/180)),this.fire(tu,[t])}},{key:"setBGColorContainer",value:function(t){_D(t)||(document.querySelector(".m-mapea-container").style.backgroundColor=t,document.querySelector(".m-mapea-container").style.backgroundImage="unset")}},{key:"enableMouseWheel",value:function(t){this.getImpl().enableMouseWheel(t)}},{key:"enableDrag",value:function(t){this.getImpl().enableDrag(t)}},{key:"setZoomLevels",value:function(t){var e=this;dD(t)||_D(t)||this.calculateMaxExtent().then((function(r){var n=e.getZoom(),i=e.getMapImpl().getSize(),o=e.getProjection().units,a=MD(r,i,t,o);e.setResolutions(a,!0),M.config.ZOOM_LEVELS=t,nt.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&(r=!e.some((function(e){return!t(e)})))):"string"==typeof e&&0===e.trim().length&&(r=!0),r},vD=function(t){var e=!1;return yD(t)||(e="function"==typeof t&&!dD(t.call)),e},bD=function(t){var e=!1;return yD(t)||(e="object"===pD(t)&&!dD(t.toString)),e},xD=function(t){var e=!1;return yD(t)||(e="string"==typeof t),e},wD=function(t){var e=!1;return!yD(t)&&xD(t)&&(e=/(https?:\/\/[^*]+)/.test(t)),e},ED=function(t){return"number"==typeof t},OD=function(t,e){var r=t;return!_D(r)&&xD(r)&&(r=r.trim(),r=e?r.toUpperCase():r.toLowerCase()),r},SD=function(t,e){var r=null,n=t.replace(/[[]/,"\\[").replace(/[\]]/,"\\]"),i=e,o=i.indexOf("?");-1!==o&&(i=i.substring(o),null!==(r=new RegExp("[\\?&]".concat(n,"=([^&#]*)")).exec(i))&&(r=decodeURIComponent(r[1].replace(/\+/g," "))));return r},ID=function(t,e){var r=t;-1===r.indexOf("?")?r+="?":"?"!==r.charAt(r.length-1)&&(r+="&");var n="";bD(e)?(Object.keys(e).forEach((function(t){var r=e[t];n+=t,n+="=",n+=encodeURIComponent(r),n+="&"})),n=n.substring(0,n.length-1)):xD(e)&&(n=e);return r+=n},CD=function(t,e){var r="";return _D(t)||(r=t),r=r.concat(Math.random()).replace(/0\./,""),_D(e)||(r=r.concat(e)),r},TD=function(t,e,r){var n=t;return n=ID(n,"request=GetCapabilities"),n=ID(n,"service=WMS"),xD(e)&&(n=ID(n,{version:e})),xD(r)&&(n=ID(n,{ticket:r})),n},PD=function(t,e){var r=t;return r=ID(r,"request=GetCapabilities"),r=ID(r,"service=WMTS"),_D(e)||(r=ID(r,{version:e})),r},RD=function(t,e,r){var n=t,i=e,o=new Array(r);n=Number.parseFloat(n),i=Number.parseFloat(i);var a=2;Number.isNaN(n)||(a=Math.pow(i/n,1/(r-1)));for(var s=0;s1?1/t:t)*cD[n]*72));return r},MD=function(t,e,r,n){var i=t,o=null,a=null;mD(i)?(o=i[2]-i[0],a=i[3]-i[1]):bD(i)?(o=i.x.max-i.x.min,a=i.y.max-i.y.min):xD(i)&&(o=(i=i.split(","))[2]-i[0],a=i[3]-i[1]);var s=o/e[0],l=a/e[1],u=Math.max(s,l);return RD(null,u,r)},ND=function(t,e){var r=e;return _D(r)&&(r="degrees"),t*cD[r]*72},AD=function(t){var e;if(!_D(t)){var r=document.createElement("div");r.innerHTML=t,e=r.children[0]}return e},kD=function(t){var e=t;if(e&&(e=e.trim()).length>0){var r=e.indexOf(":");-1!==r&&(r+=1,e=e.substring(r,e.length))}return e},jD=function(t){var e=OD(t);return e=(e=e.replace(/_(\w)/g,(function(t,e){return" ".concat(e.toUpperCase())}))).replace(/^\w/,(function(t){return t.toUpperCase()}))},FD=function(t){var e=null;if(!_D(t)){e=(e=t[0]).replace(/\/+\s*$/,"");for(var r=1,n=t.length;r=0?o=s:(o=i+s)<0&&(o=0);o]*>)+[^<]*(<\s*\/\s*script[^>]*>)+/gi,"").replace(/(('|')\s*\+\s*)?\s*eval\s*\(.*\)\s*(\+\s*('|'))?/gi,"")},BD=function(t){var e=t;if("ontouchstart"in document){var r=0;e.addEventListener("touchstart",(function(t){r=e.scrollTop+t.touches[0].pageY})),e.addEventListener("touchmove",(function(t){e.scrollTop=r-t.touches[0].pageY}))}},zD=function(t,e){var r=t.replace(/^(.+)\/$/,"$1").replace(/^(.+)\?$/,"$1"),n=e.replace(/^(.+)\/$/,"$1").replace(/^(.+)\?$/,"$1");return r.toLowerCase()===n.toLowerCase()},VD=function(t){var e=[kc.toLowerCase(),"GeometryPropertyType".toLowerCase(),zc.toLowerCase(),jc.toLowerCase(),Bc.toLowerCase(),Fc.toLowerCase(),Dc.toLowerCase(),Gc.toLowerCase(),Uc.toLowerCase(),Vc.toLowerCase(),qc.toLowerCase(),"pointpropertytype","polygonpropertytype","linestringpropertytype","geometrypropertytype","multisurfacepropertytype","multilinestringpropertytype","surfacepropertytype","geometrypropertytype","geometryarraypropertytype","multigeometrypropertytype","multipolygonpropertytype","multipointpropertytype","abstractgeometricaggregatetype","pointarraypropertytype","curvearraypropertytype","solidpropertytype","solidarraypropertytype"],r=t.toLowerCase();return-1!==e.indexOf(r)},qD=function(t){var e=document.createElement("textarea");return e.innerHTML=t,e.value},YD=function(t){var e=t;!xD(t)&&t.outerHTML&&(e=t.outerHTML);var r=document.createElement("DIV");return r.innerHTML=e,r.textContent||r.innerText||""},WD=function(t,e,r){return l.a.scale([t,e]).colors(r)},XD=function(t){var e;if(xD(t)){var r=l()(t).hex();r=r.replace(/^#/,"0x"),e=l()(16777215-r).hex()}return e},HD=function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e;return _D(r)||Object.keys(r).forEach((function(e){var i=r[e];mD(i)?i=hD(i):bD(i)&&(i=t({},i)),_D(n[e])?n[e]=i:bD(n[e])&&t(n[e],i)})),n},ZD=function(t,e){var r=hD(t);if(t.length1&&(e=r.reduce((function(t,e){var r;return _D(t)||(r=t instanceof o?t.getAttribute(e):t[e]),r}),this))}return e}},{key:"setAttribute",value:function(t,e){return this.getImpl().setAttribute(t,e)}},{key:"setStyle",value:function(t){!_D(t)&&t instanceof Rm?(this.style_=t,this.style_.applyToFeature(this)):_D(t)&&(this.style_=null,this.getImpl().clearStyle()),this.fire($l,[t,this])}},{key:"equals",value:function(t){return this.getId()===t.getId()}},{key:"getStyle",value:function(){return this.style_}},{key:"clearStyle",value:function(){this.setStyle(null)}},{key:"getCentroid",value:function(){var t=this.getId(),e=this.getAttributes(),r=new q_({stroke:{color:"#67af13",width:2},radius:8,fill:{color:"#67af13",opacity:.2}}),n=this.getImpl().getCentroid();return _D(n)||(n.setId("".concat(t," centroid}")),n.setAttributes(e),n.setStyle(r)),n}}])&&fG(e.prototype,r),n&&fG(e,n),o}(Il);function _G(t){return(_G="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function vG(t,e){return(vG=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function bG(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=wG(t);if(e){var i=wG(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return xG(this,r)}}function xG(t,e){return!e||"object"!==_G(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function wG(t){return(wG=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var EG=function(t){!function(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}}),e&&vG(t,e)}(r,t);var e=bG(r);function r(t,n){var i;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),(i=e.call(this,CD("_mapea_cluster_"))).setAttributes(n),i.setAttribute("features",t),i}return r}(mG);function OG(t){return(OG="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function SG(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function IG(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return NG(this,o),(e=i.call(this)).filterFunction_=t,e.cqlFilter_="",_D(r.cqlFilter)||(e.cqlFilter_=r.cqlFilter),e}return e=o,(r=[{key:"setFunction",value:function(t){this.filterFunction_=t}},{key:"getFunctionFilter",value:function(){return this.filterFunction_}},{key:"execute",value:function(t){return t.filter(this.filterFunction_)}},{key:"toCQL",value:function(){return this.cqlFilter_}}])&&AG(e.prototype,r),n&&AG(e,n),o}(Vx);function UG(t){return(UG="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function BG(t,e){return(BG=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function zG(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=qG(t);if(e){var i=qG(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return VG(this,r)}}function VG(t,e){return!e||"object"!==UG(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function qG(t){return(qG=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}var YG=function(t){!function(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}}),e&&BG(t,e)}(r,t);var e=zG(r);function r(t,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r);return e.call(this,(function(e,r){var n=null;return _D(e)||(n=e.getGeometry()),t(n,r)}),n)}return r}(GG),WG=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function XG(t){return"string"==typeof t?t:""}var HG=function(t){function e(){return t.call(this)||this}return WG(e,t),e.prototype.getType=function(){return xg},e.prototype.readFeature=function(t,e){return this.readFeatureFromText(XG(t),this.adaptOptions(e))},e.prototype.readFeatureFromText=function(t,e){return Object(Gn.b)()},e.prototype.readFeatures=function(t,e){return this.readFeaturesFromText(XG(t),this.adaptOptions(e))},e.prototype.readFeaturesFromText=function(t,e){return Object(Gn.b)()},e.prototype.readGeometry=function(t,e){return this.readGeometryFromText(XG(t),this.adaptOptions(e))},e.prototype.readGeometryFromText=function(t,e){return Object(Gn.b)()},e.prototype.readProjection=function(t){return this.readProjectionFromText(XG(t))},e.prototype.readProjectionFromText=function(t){return this.dataProjection},e.prototype.writeFeature=function(t,e){return this.writeFeatureText(t,this.adaptOptions(e))},e.prototype.writeFeatureText=function(t,e){return Object(Gn.b)()},e.prototype.writeFeatures=function(t,e){return this.writeFeaturesText(t,this.adaptOptions(e))},e.prototype.writeFeaturesText=function(t,e){return Object(Gn.b)()},e.prototype.writeGeometry=function(t,e){return this.writeGeometryText(t,this.adaptOptions(e))},e.prototype.writeGeometryText=function(t,e){return Object(Gn.b)()},e}(RI),ZG=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),KG={POINT:aa,LINESTRING:Qc,POLYGON:Oa,MULTIPOINT:Hc,MULTILINESTRING:eh,MULTIPOLYGON:ih},JG="EMPTY",$G=0,QG=1,tU=2,eU=3,rU=4,nU=5,iU=6,oU={};for(var aU in fo.a)oU[aU]=fo.a[aU].toUpperCase();var sU=function(){function t(t){this.wkt=t,this.index_=-1}return t.prototype.isAlpha_=function(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"},t.prototype.isNumeric_=function(t,e){return t>="0"&&t<="9"||"."==t&&!(void 0!==e&&e)},t.prototype.isWhiteSpace_=function(t){return" "==t||"\t"==t||"\r"==t||"\n"==t},t.prototype.nextChar_=function(){return this.wkt.charAt(++this.index_)},t.prototype.nextToken=function(){var t,e=this.nextChar_(),r=this.index_,n=e;if("("==e)t=tU;else if(","==e)t=nU;else if(")"==e)t=eU;else if(this.isNumeric_(e)||"-"==e)t=rU,n=this.readNumber_();else if(this.isAlpha_(e))t=QG,n=this.readText_();else{if(this.isWhiteSpace_(e))return this.nextToken();if(""!==e)throw new Error("Unexpected character: "+e);t=iU}return{position:r,value:n,type:t}},t.prototype.readNumber_=function(){var t,e=this.index_,r=!1,n=!1;do{"."==t?r=!0:"e"!=t&&"E"!=t||(n=!0),t=this.nextChar_()}while(this.isNumeric_(t,r)||!n&&("e"==t||"E"==t)||n&&("-"==t||"+"==t));return parseFloat(this.wkt.substring(e,this.index_--))},t.prototype.readText_=function(){var t,e=this.index_;do{t=this.nextChar_()}while(this.isAlpha_(t));return this.wkt.substring(e,this.index_--).toUpperCase()},t}(),lU=function(){function t(t){this.lexer_=t,this.token_={position:0,type:$G},this.layout_=Io}return t.prototype.consume_=function(){this.token_=this.lexer_.nextToken()},t.prototype.isTokenType=function(t){return this.token_.type==t},t.prototype.match=function(t){var e=this.isTokenType(t);return e&&this.consume_(),e},t.prototype.parse=function(){return this.consume_(),this.parseGeometry_()},t.prototype.parseGeometryLayout_=function(){var t=Io,e=this.token_;if(this.isTokenType(QG)){var r=e.value;"Z"===r?t=Co:"M"===r?t=To:"ZM"===r&&(t=Po),t!==Io&&this.consume_()}return t},t.prototype.parseGeometryCollectionText_=function(){if(this.match(tU)){var t=[];do{t.push(this.parseGeometry_())}while(this.match(nU));if(this.match(eU))return t}throw new Error(this.formatErrorMessage_())},t.prototype.parsePointText_=function(){if(this.match(tU)){var t=this.parsePoint_();if(this.match(eU))return t}throw new Error(this.formatErrorMessage_())},t.prototype.parseLineStringText_=function(){if(this.match(tU)){var t=this.parsePointList_();if(this.match(eU))return t}throw new Error(this.formatErrorMessage_())},t.prototype.parsePolygonText_=function(){if(this.match(tU)){var t=this.parseLineStringTextList_();if(this.match(eU))return t}throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiPointText_=function(){if(this.match(tU)){var t=void 0;if(t=this.token_.type==tU?this.parsePointTextList_():this.parsePointList_(),this.match(eU))return t}throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiLineStringText_=function(){if(this.match(tU)){var t=this.parseLineStringTextList_();if(this.match(eU))return t}throw new Error(this.formatErrorMessage_())},t.prototype.parseMultiPolygonText_=function(){if(this.match(tU)){var t=this.parsePolygonTextList_();if(this.match(eU))return t}throw new Error(this.formatErrorMessage_())},t.prototype.parsePoint_=function(){for(var t=[],e=this.layout_.length,r=0;r0&&(e+=" "+n)}return 0===r.length?e+" "+JG:e+"("+r+")"}var gU=uU;function yU(t){return(yU="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function mU(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function _U(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};return mU(this,o),(t=i.call(this,e)).gjFormat_=new vN,t}return e=o,(r=[{key:"write",value:function(t){var e=this.gjFormat_.readGeometryFromObject(t);if("point"===e.getType().toLowerCase()){var r=e.getCoordinates();e.setCoordinates([r[0],r[1]])}return this.writeGeometryText(e)}}])&&_U(e.prototype,r),n&&_U(e,n),o}(gU);function OU(t){return(OU="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function SU(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function IU(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};SU(this,o);var r=new EU(e);return t=i.call(this,r),dD(EU)&&_l(uu("exception").wkt_method),t}return e=o,(r=[{key:"write",value:function(t){return this.getImpl().write(t)}}])&&IU(e.prototype,r),n&&IU(e,n),o}(Il);function MU(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function NU(t,e){for(var r=0;r0&&(r=i.TileMatrix.map((function(t){return t.Identifier}))),r}},{key:"getFormat",value:function(t){var e,r=this.capabilities.Contents.Layer.filter((function(e){return e.Identifier===t}))[0];return null!=r&&(e=r.Format[0]),e}},{key:"getOptionsFromCapabilities",value:function(t,e){return vk(this.capabilities,{layer:t,matrixSet:e})}}])&&NU(e.prototype,r),n&&NU(e,n),t}();function kU(t){return(kU="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function jU(t,e){for(var r=0;r0&&(this.selectedFeatures_.length=0,this.map.removePopup())}},{key:"drawPoints",value:function(t){var e=t;_D(e)&&_l(uu("exception").no_point),mD(e)||(e=[e]);var r=this.pointsToGeoJSON_(e);this.drawGeoJSON(r)}},{key:"drawGeoJSON",value:function(t){var e=this,r=t;_D(r)&&_l(uu("exception").no_geojson),mD(r)||(r=[r]);var n=Object(u.o)(this.map.getProjection().code),i=[];r.forEach((function(t){var r=e.geojsonFormatter_.readFeatures(t,{dataProjection:n});i=i.concat(r)})),this.ol3Layer.getSource().addFeatures(i)}},{key:"drawFeatures",value:function(t){var e=t;_D(e)||(mD(e)||(e=[e]),this.ol3Layer.getSource().addFeatures(e))}},{key:"removeFeatures",value:function(t){var e=t;if(!_D(e)){mD(e)||(e=[e]);var r=this.ol3Layer.getSource();e.forEach((function(t){try{r.removeFeature(t)}catch(t){throw t}}))}}},{key:"getPoints",value:function(t){var e=[],r=this.ol3Layer.getSource();return e=_D(t)?r.getFeatures():r.getFeaturesAtCoordinate(t),this.featuresToPoints_(e)}},{key:"destroy",value:function(){var t=this.map.getMapImpl();_D(this.ol3Layer)||(t.removeLayer(this.ol3Layer),this.ol3Layer=null),this.options=null,this.map=null}},{key:"equals",value:function(t){var e=!1;return t instanceof o&&(e=e&&this.name===t.name),e}},{key:"pointsToGeoJSON_",value:function(t){var e=this,r=Object(u.o)(this.map.getProjection().code);return t.map((function(t){var n=t.data,i=new aa([t.x,t.y]);return{type:"Feature",geometry:e.geojsonFormatter_.writeGeometryObject(i,{dataProjection:r}),properties:n,click:t.click,showPopup:t.showPopup}}))}},{key:"featuresToPoints_",value:function(t){return[]}}])&&jU(e.prototype,r),n&&jU(e,n),o}(Rh),zU=34962,VU=34963,qU=35044,YU=35048,WU=["experimental-webgl","webgl","webkit-3d","moz-webgl"];function XU(t,e){for(var r=Object(ii.a)({preserveDrawingBuffer:!0,antialias:!ni.f},e),n=WU.length,i=0;i0))){var r=XU(e.canvas).getExtension("WEBGL_lose_context");r&&r.loseContext(),delete hB[t]}}(this.canvasCacheKey_),delete this.gl_,delete this.canvas_},e.prototype.prepareDraw=function(t,e){var r=this.getGL(),n=this.getCanvas(),i=t.size,o=t.pixelRatio;n.width=i[0]*o,n.height=i[1]*o,n.style.width=i[0]+"px",n.style.height=i[1]+"px",r.useProgram(this.currentProgram_);for(var a=this.postProcessPasses_.length-1;a>=0;a--)this.postProcessPasses_[a].init(t);r.bindTexture(r.TEXTURE_2D,null),r.clearColor(0,0,0,0),r.clear(r.COLOR_BUFFER_BIT),r.enable(r.BLEND),r.blendFunc(r.ONE,e?r.ZERO:r.ONE_MINUS_SRC_ALPHA),r.useProgram(this.currentProgram_),this.applyFrameState(t),this.applyUniforms(t)},e.prototype.prepareDrawToRenderTarget=function(t,e,r){var n=this.getGL(),i=e.getSize();n.bindFramebuffer(n.FRAMEBUFFER,e.getFramebuffer()),n.viewport(0,0,i[0],i[1]),n.bindTexture(n.TEXTURE_2D,e.getTexture()),n.clearColor(0,0,0,0),n.clear(n.COLOR_BUFFER_BIT),n.enable(n.BLEND),n.blendFunc(n.ONE,r?n.ZERO:n.ONE_MINUS_SRC_ALPHA),n.useProgram(this.currentProgram_),this.applyFrameState(t),this.applyUniforms(t)},e.prototype.drawElements=function(t,e){var r=this.getGL();this.getExtension("OES_element_index_uint");var n=r.UNSIGNED_INT,i=e-t,o=4*t;r.drawElements(r.TRIANGLES,i,n,o)},e.prototype.finalizeDraw=function(t,e,r){for(var n=0,i=this.postProcessPasses_.length;nthis.size_[0]||e>=this.size_[1])return xB[0]=0,xB[1]=0,xB[2]=0,xB[3]=0,xB;this.readAll();var r=Math.floor(t)+(this.size_[1]-Math.floor(e)-1)*this.size_[0];return xB[0]=this.data_[4*r],xB[1]=this.data_[4*r+1],xB[2]=this.data_[4*r+2],xB[3]=this.data_[4*r+3],xB},t.prototype.getTexture=function(){return this.texture_},t.prototype.getFramebuffer=function(){return this.framebuffer_},t.prototype.updateSize_=function(){var t=this.size_,e=this.helper_.getGL();this.texture_=this.helper_.createTexture(t,null,this.texture_),e.bindFramebuffer(e.FRAMEBUFFER,this.framebuffer_),e.viewport(0,0,t[0],t[1]),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,this.texture_,0),this.data_=new Uint8Array(t[0]*t[1]*4)},t}(),EB=r(117),OB=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),SB=function(t){function e(e,r){var n=this,i=r.uniforms||{},o=Object(Un.d)();i[iB]=o,(n=t.call(this,e,{uniforms:i,postProcesses:r.postProcesses})||this).ready=!1,n.sourceRevision_=-1,n.verticesBuffer_=new KU(zU,YU),n.hitVerticesBuffer_=new KU(zU,YU),n.indicesBuffer_=new KU(VU,YU),n.vertexShader_=r.vertexShader,n.fragmentShader_=r.fragmentShader,n.program_,n.hitDetectionEnabled_=!(!r.hitFragmentShader||!r.hitVertexShader),n.hitVertexShader_=r.hitVertexShader,n.hitFragmentShader_=r.hitFragmentShader,n.hitProgram_;var a=r.attributes?r.attributes.map((function(t){return{name:"a_"+t.name,size:1,type:cB.FLOAT}})):[];n.attributes=[{name:"a_position",size:2,type:cB.FLOAT},{name:"a_index",size:1,type:cB.FLOAT}].concat(a),n.hitDetectionAttributes=[{name:"a_position",size:2,type:cB.FLOAT},{name:"a_index",size:1,type:cB.FLOAT},{name:"a_hitColor",size:4,type:cB.FLOAT},{name:"a_featureUid",size:1,type:cB.FLOAT}].concat(a),n.customAttributes=r.attributes?r.attributes:[],n.previousExtent_=Object(mt.k)(),n.currentTransform_=o,n.renderTransform_=Object(Un.d)(),n.invertRenderTransform_=Object(Un.d)(),n.renderInstructions_=new Float32Array(0),n.hitRenderInstructions_=new Float32Array(0),n.hitRenderTarget_,n.generateBuffersRun_=0,n.worker_=Object(EB.a)(),n.worker_.addEventListener("message",function(t){var e=t.data;if(e.type===_B){var r=e.projectionTransform;e.hitDetection?(this.hitVerticesBuffer_.fromArrayBuffer(e.vertexBuffer),this.helper.flushBufferData(this.hitVerticesBuffer_)):(this.verticesBuffer_.fromArrayBuffer(e.vertexBuffer),this.helper.flushBufferData(this.verticesBuffer_)),this.indicesBuffer_.fromArrayBuffer(e.indexBuffer),this.helper.flushBufferData(this.indicesBuffer_),this.renderTransform_=r,Object(Un.e)(this.invertRenderTransform_,this.renderTransform_),e.hitDetection?this.hitRenderInstructions_=new Float32Array(t.data.renderInstructions):(this.renderInstructions_=new Float32Array(t.data.renderInstructions),e.generateBuffersRun===this.generateBuffersRun_&&(this.ready=!0)),this.getLayer().changed()}}.bind(n)),n.featureCache_={},n.featureCount_=0;var s=n.getLayer().getSource();return n.sourceListenKeys_=[Object(Ci.a)(s,hg,n.handleSourceFeatureAdded_,n),Object(Ci.a)(s,fg,n.handleSourceFeatureChanged_,n),Object(Ci.a)(s,dg,n.handleSourceFeatureDelete_,n),Object(Ci.a)(s,pg,n.handleSourceFeatureClear_,n)],s.forEachFeature(function(t){this.featureCache_[Object(Gn.c)(t)]={feature:t,properties:t.getProperties(),geometry:t.getGeometry()},this.featureCount_++}.bind(n)),n}return OB(e,t),e.prototype.afterHelperCreated=function(){this.program_=this.helper.getProgram(this.fragmentShader_,this.vertexShader_),this.hitDetectionEnabled_&&(this.hitProgram_=this.helper.getProgram(this.hitFragmentShader_,this.hitVertexShader_),this.hitRenderTarget_=new wB(this.helper))},e.prototype.handleSourceFeatureAdded_=function(t){var e=t.feature;this.featureCache_[Object(Gn.c)(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()},this.featureCount_++},e.prototype.handleSourceFeatureChanged_=function(t){var e=t.feature;this.featureCache_[Object(Gn.c)(e)]={feature:e,properties:e.getProperties(),geometry:e.getGeometry()}},e.prototype.handleSourceFeatureDelete_=function(t){var e=t.feature;delete this.featureCache_[Object(Gn.c)(e)],this.featureCount_--},e.prototype.handleSourceFeatureClear_=function(){this.featureCache_={},this.featureCount_=0},e.prototype.renderFrame=function(t){var e=this.helper.getGL();this.preRender(e,t);var r=this.indicesBuffer_.getSize();this.helper.drawElements(0,r),this.helper.finalizeDraw(t,this.dispatchPreComposeEvent,this.dispatchPostComposeEvent);var n=this.helper.getCanvas();return this.hitDetectionEnabled_&&(this.renderHitDetection(t),this.hitRenderTarget_.clearCachedData()),this.postRender(e,t),n},e.prototype.prepareFrameInternal=function(t){var e=this.getLayer(),r=e.getSource(),n=t.viewState,i=!t.viewHints[po.a.ANIMATING]&&!t.viewHints[po.a.INTERACTING],o=!Object(mt.p)(this.previousExtent_,t.extent),a=this.sourceRevision_0&&void 0!==arguments[0]?arguments[0]:{};NB(this,o),t=i.call(this,e);var r,n=e.weight?e.weight:"weight";if("string"==typeof n){var a=1,s=t.getWeights(e);s.length>0?(a=s.reduce((function(t,e){return Math.max(t,e)})),t.maxWeight_=a,t.minWeight_=s.reduce((function(t,e){return Math.min(t,e)})),r=function(t){var e;return t instanceof Wc?e=t.get(n):t instanceof mG&&(e=t.getAttribute(n)),parseFloat(e/a)}):Gx("La capa de nombre ".concat(e.name," no tiene ninguna feature
    \n con el atributo especificado en simbología establecida.\n
    Se setea una ponderación por defecto"),"Mapa de calor")}else r=n;return t.setStyle((function(e,n){var i=By.getValue(r,e),o=void 0!==i?Object(mo.b)(i,0,1):1,a=255*o||0,s=t.styleCache_[a];return s||(s=[new $y({image:new iy({opacity:o,src:t.circleImage_})})],t.styleCache_[a]=s),s})),t}return e=o,(r=[{key:"getMinWeight",value:function(){return this.minWeight_}},{key:"getMaxWeight",value:function(){return this.maxWeight_}},{key:"getWeights",value:function(t){var e=[],r=this.getSource();if(null!==r){var n=r.getFeatures();n.length>0&&(e=n.map((function(e){return e.get(t.weight)})).filter((function(t){return null!=t})))}return e}}])&&AB(e.prototype,r),n&&AB(e,n),o}(LB);function UB(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function BB(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};UB(this,t),this.attributeName_=e.attribute||null,this.label_=e.label||null,this.fillColor_=e.fill||null,this.legend_=e.legend||null}var e,r,n;return e=t,(r=[{key:"attribute",get:function(){return this.attributeName_},set:function(t){this.attributeName_=t}},{key:"label",get:function(){return this.label_},set:function(t){this.label_=t}},{key:"fillColor",get:function(){return this.fillColor_},set:function(t){this.fillColor_=t}},{key:"legend",get:function(){return this.legend_},set:function(t){this.legend_=t}}])&&BB(e.prototype,r),n&&BB(e,n),t}(),VB={DONUT:"donut",PIE_3D:"pie3D",PIE:"pie",BAR:"bar"},qB={Custom:"m.style.chart.types.custom_scheme",Classic:["#ffa500","blue","red","green","cyan","magenta","yellow","#0f0"],Dark:["#960","#003","#900","#060","#099","#909","#990","#090"],Pale:["#fd0","#369","#f64","#3b7","#880","#b5d","#666"],Pastel:["#fb4","#79c","#f66","#7d7","#acc","#fdd","#ff9","#b9b"],Neon:["#ff0","#0ff","#0f0","#f0f","#f00","#00f"]};function YB(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!e||r.length!==e);n=!0);}catch(t){i=!0,o=t}finally{try{n||null==s.return||s.return()}finally{if(i)throw o}}return r}(t,e)||XB(t,e)||function(){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 WB(t){return function(t){if(Array.isArray(t))return HB(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||XB(t)||function(){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 XB(t,e){if(t){if("string"==typeof t)return HB(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?HB(t,e):void 0}}function HB(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r0&&void 0!==arguments[0]?arguments[0]:{};KB(this,o);var e=t,r=e.variables||null;if(Object.values(VB).includes(e.type)||(e.type=o.DEFAULT.type),_D(r)||(r instanceof Array?e.variables=r.filter((function(t){return null!=t})).map((function(t){return o.formatVariable(t)})):"string"==typeof r||"object"===ZB(r)?e.variables=[o.formatVariable(r)]:e.variables=[]),_D(e.scheme))e.scheme=o.DEFAULT.scheme;else if("string"==typeof e.scheme){var n=e.variables.some((function(t){return null!=t.fillColor}));e.scheme===qB.Custom&&n?e.scheme=e.variables.map((function(t){return t.fillColor?t.fillColor:""})):e.scheme=qB[e.scheme]||o.DEFAULT.scheme}else e.scheme instanceof Array&&e.scheme.every((function(t){return"string"==typeof t}))||(e.scheme=o.DEFAULT.scheme);var a=new Rz(e);return i.call(this,e,a)}return e=o,n=[{key:"formatVariable",value:function(t){return null==t?null:t instanceof zB?t:new zB("string"==typeof t?{attribute:t}:t)}},{key:"deserialize",value:function(t){var e=YB(t,1)[0],r=e;return r.variables=e.variables.map((function(t){return new zB(QD(t))})),new Function(["options"],"return new M.style.Chart(options)")(r)}}],(r=[{key:"updateCanvas",value:function(){_D(this.getImpl())&&_D(this.canvas_)||this.getImpl().updateCanvas(this.canvas_)}},{key:"apply",value:function(t){var e=this;this.layer_=t,t.getFeatures().forEach((function(t){return t.setStyle(e.clone())})),this.updateCanvas()}},{key:"toJSON",value:function(){var t=this.getOptions();return{parameters:[{type:t.type,radius:t.radius,donutRadio:t.donutRadio,offsetX:t.offsetX,offsetY:t.offsetY,stroke:_D(t.stroke)?void 0:HD({},t.stroke),fill3DColor:t.fill3DColor,scheme:mD(t.scheme)?WB(t.scheme):t.scheme,label:_D(t.label)?void 0:HD({},t.label),rotateWithView:t.rotateWithView,variables:t.variables.map((function(t){var e;return _D(t.label)||(e=HD({},t.label),e=$D(e)),{attribute:t.attribute,legend:t.legend,fill:t.fillColor,label:e}}))}],deserializedMethod:"M.style.Chart.deserialize"}}},{key:"ORDER",get:function(){return 1}}])&&JB(e.prototype,r),n&&JB(e,n),o}(Rm);rz.DEFAULT={shadow3dColor:"#369",type:VB.PIE,scheme:qB.Classic,radius:20,donutRatio:.5,offsetX:0,offsetY:0,animationStep:1};var nz=rz;function iz(t){return(iz="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function oz(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function az(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};oz(this,o);var r=_D(e.stroke)?0:e.stroke.getWidth();return t=i.call(this,{radius:("number"==typeof e.radius?e.radius:0)+r,fill:new zg({color:[0,0,0]}),rotation:"number"==typeof e.rotation?e.rotation:0,snapToPixel:"boolean"==typeof e.snapToPixel&&e.snapToPixel}),e.scale&&t.setScale(e.scale),t.variables_=e.variables||[],t.stroke_=e.stroke||null,t.radius_=e.radius||0,t.donutRatio_=e.donutRatio||0,t.type_=e.type||null,t.offset_=[e.offsetX?e.offsetX:0,e.offsetY?e.offsetY:0],t.animation_={animate:"number"==typeof e.animation,step:"number"==typeof e.animation?e.animation:nz.DEFAULT.animationStep},t.data_=e.data||null,t.colors_=e.scheme instanceof Array?e.scheme:[],t.fill3DColor_=e.fill3DColor||"#000",t.rotateWithView_=e.rotateWithView||!1,t.renderChart_(),t}return e=o,(r=[{key:"clone",value:function(){var t=new o({type:this.type_,radius:this.radius_,colors:this.colors_,rotation:this.getRotation(),scale:this.getScale(),donutRatio:this.donutRatio_,data:this.data_,stroke:this.stroke_,scheme:this.colors_,offsetX:this.offset_[0],offsetY:this.offset_[1],animation:this.animation_,fill3DColor:this.fill3DColor_,rotateWithView:this.rotateWithView_});return t.setScale(this.getScale()),t.setOpacity(this.getOpacity()),t}},{key:"setRadius",value:function(t,e){this.donutRatio_=e||this.donutRatio_,this.radius=t}},{key:"setAnimation",value:function(t){if(!1===t){if(!1===this.animation_.animate)return;this.animation_.animate=!1}else{if(this.animation_.step===t)return;this.animation_.animate=!0,this.animation_.step=t}this.renderChart_()}},{key:"getChecksum",value:function(){var t,e=null!==this.stroke_?this.stroke_.getChecksum():"-";if(null===this.checksums_||e!==this.checksums_[1]||t!==this.checksums_[2]||this.radius_!==this.checksums_[3]||this.data_.join("|")!==this.checksums_[4]){var r=this.radius_?this.radius_.toString():"-",n="c".concat(e).concat(t).concat(r).concat(this.data_.join("|"));this.checksums_=[n,e,t,this.radius_,this.data_.join("|")]}return this.checksums_[0]}},{key:"renderChart_",value:function(t){switch(this.type_){case VB.DONUT:case VB.PIE_3D:case VB.PIE:this.renderCircleChart();break;default:this.renderBarChart()}}},{key:"renderBarChart",value:function(){var t,e=this,r=this.getImage(1),n=r.getContext("2d"),i=0,o=this.animation_.animate?this.animation_.step:1;this.stroke_&&(t=Object(Bn.b)(this.stroke_.getColor()),i=this.stroke_.getWidth());var a,s=Math.max.apply(null,this.data_)||0,l=Math.min(5,2*this.radius_/this.data_.length),u=r.width-(i||0),c=r.width/2,h=c-this.data_.length*l/2;t&&(n.strokeStyle=t,n.lineWidth=i),this.data_.sort((function(t,e){return t-e})).forEach((function(r,i){n.beginPath(),n.fillStyle=e.colors_[i%e.colors_.length],a=h+l;var c=r/s*2*e.radius_*o;n.rect(h,u-c,l,c),n.closePath(),n.fill(),t&&n.stroke(),h=a}));var f=this.getAnchor();f[0]=c-this.offset_[0],f[1]=c-this.offset_[1]}},{key:"renderCircleChart",value:function(){var t,e=0;this.stroke_&&(t=Object(Bn.b)(this.stroke_.getColor()),e=this.stroke_.getWidth());var r=this.getImage(1),n=r.getContext("2d");n.clearRect(0,0,r.width,r.height),n.lineJoin="round";var i=0;!_D(this.data_)&&this.data_.length>0&&(i=this.data_.reduce((function(t,e){return t+e}))),n.setTransform(1,0,0,1,0,0),n.translate(0,0);var o=this.animation_.animate?this.animation_.step:1,a=Math.PI*(o-1.5),s=r.width/2;t&&(n.strokeStyle=t,n.lineWidth=e),n.save(),this.type_===VB.PIE_3D?this.drawPie3D(n,a,s,o,t,i):this.type_===VB.DONUT?this.drawDonut(n,a,s,o,t,e,i):this.drawPie(n,a,s,o,t,i),n.restore();var l=this.getAnchor();l[0]=s-this.offset_[0],l[1]=s-this.offset_[1]}},{key:"drawDonut",value:function(t,e,r,n,i,o,a){var s=t;s.save(),s.beginPath(),s.rect(0,0,2*r,2*r),s.arc(r,r,this.radius_*n*this.donutRatio_,0,2*Math.PI),s.clip("evenodd");var l=this.drawPie(s,e,r,n,i,a);s.restore(),s.beginPath(),s.strokeStyle=i,s.lineWidth=o;var u=this.radius_;s.arc(r,r,u*n*this.donutRatio_,Math.PI*(n-1.5),l),i&&s.stroke()}},{key:"drawPie3D",value:function(t,e,r,n,i,o){var a=t;a.translate(0,.3*r),a.scale(1,.7),a.beginPath(),a.fillStyle=this.fill3DColor_,a.arc(r,1.4*r,this.radius_*n,0,2*Math.PI),a.fill(),i&&a.stroke(),this.drawPie(t,e,r,n,i,o)}},{key:"drawPie",value:function(t,e,r,n,i,o){var a,s=this,l=e,u=t;return this.data_.forEach((function(t,e){u.beginPath(),u.moveTo(r,r),u.fillStyle=s.colors_[e%s.colors_.length],a=l+2*Math.PI*t/(o*n),u.arc(r,r,s.radius_*n,l,a),u.closePath(),u.fill(),i&&u.stroke(),l=a})),l}},{key:"data",get:function(){return this.data_},set:function(t){this.data_=t,this.renderChart_()}},{key:"radius",get:function(){return this.radius_},set:function(t){this.radius_=t,this.renderChart_()}}])&&az(e.prototype,r),n&&az(e,n),o}(Vy);function fz(t){return(fz="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function pz(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function dz(t,e){return(dz=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function gz(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=mz(t);if(e){var i=mz(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return yz(this,r)}}function yz(t,e){return!e||"object"!==fz(e)&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function mz(t){return(mz=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function _z(t){return(_z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function vz(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!e||r.length!==e);n=!0);}catch(t){i=!0,o=t}finally{try{n||null==s.return||s.return()}finally{if(i)throw o}}return r}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return bz(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return bz(t,e)}(t,e)||function(){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 bz(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r1?n-1:0),o=1;o0&&void 0!==arguments[0]?arguments[0]:{};return xz(this,s),Cz(e,nz.DEFAULT),(t=a.call(this,e)).variables_=e.variables||[],t.colorsScheme_=e.scheme||[],t}return e=s,(r=[{key:"updateCanvas",value:function(t){if(!_D(t)){var e=t.getContext("2d");this.drawGeometryToCanvas(e)}}},{key:"drawGeometryToCanvas",value:function(t){var e=this,r=t;if(!_D(r)&&!_D(r.canvas)){var n=s.CANVAS_PROPS.fixedProps,i=s.CANVAS_PROPS.width;r.canvas.setAttribute("width",i),r.width=i;var o=[],a={};Object.keys(s.CANVAS_PROPS.percentages).forEach((function(t){a[t]=i*(s.CANVAS_PROPS.percentages[t]/100)}));var l=[a.left_right_content,n.top_content],u=l[0],c=l[1],h=function(t,i,s){var l=vz(t,2),u=l[0],c=l[1];c+=n.item_top_margin,o.push(function(t){var e=t.context;e.beginPath(),e.strokeStyle=t.strokeColor,e.lineWidth=t.width,e.fillStyle=t.color,e.rect(t.x,t.y,t.rectSize,t.rectSize),e.closePath(),e.stroke(),e.fill()}.bind(e,{context:r,strokeColor:"#000",width:n.rect_border_width,color:s,x:u,y:c,rectSize:n.rect_size})),u+=a.item_side_margin+n.rect_size;var h=(c+=n.rect_size/1.5)+n.item_top_margin,f=function(t,i,a,s,l){var u=a.split(" "),c="",h=i[0],f=i[1];return o.push(function(t){var e=t.context;e.font="".concat(t.fontSize,"px ").concat(t.fontFamily),e.strokeStyle=t.strokeColor,e.strokeWidth=t.strokeWidth,e.fillStyle=t.textColor}.bind(e,{context:r,fontSize:n.font_size,fontFamily:n.font_family,strokeColor:n.text_stroke_color,strokeWidth:n.text_stroke_width,textColor:n.text_color})),u.forEach((function(t,n){r.measureText("".concat(c+t)).width>s&&n>0?(o.push(function(t,e,r,n){t.strokeText(e,r,n),t.fillText(e,r,n)}.bind(e,r,c,h,f)),c="".concat(t," "),f+=l):c="".concat(c+t," ")})),o.push(function(t,e,r,n){t.strokeText(e,r,n),t.fillText(e,r,n)}.bind(e,r,c,h,f)),[h,f]}(0,[u,c],i,a.max_text_width,a.max_text_line_height);return[f[0],f[1]>h?f[1]:h]};this.variables_.forEach((function(t,r){var n=_D(t.legend)?t.attribute:t.legend,i=_D(t.fillColor)?e.colorsScheme_[r%e.colorsScheme_.length]||e.colorsScheme_[0]:t.fillColor,o=vz(h([u,c],n,i),2);u=o[0],c=o[1],u=a.left_right_content})),c+=n.top_content,r.canvas.setAttribute("height",c),r.save(),o.forEach((function(t){return t()})),r.restore()}}},{key:"updateFacadeOptions",value:function(t){var e=this,r=t;r.rotateWithView=!1,this.olStyleFn_=function(t,o){var a=t;a instanceof Wc||(a=e);var s=e.formatDataRecursively_(r,a),l=[];if(e.variables_.forEach((function(t){var e=a.get(t.attribute);e=parseFloat(e),l=l.concat(e instanceof Array?e:[e]).filter((function(t){return null!=t}))})),0===l.length)throw new Error("cannot draw an empty data chart");s.data=l,_D(r.stroke)||(s.stroke=new Bg(r.stroke));var u=[new am({geometry:function(t){var e=wh.getCentroid(t.getGeometry());return new aa(e)},image:new hz(s)})];return"bar"!==s.type?1!==r.variables.length&&r.variables.length!==l.length||(u=u.concat(function(t,e,r){var n=0,i=e.data.reduce((function(t,e){return t+e})),o=e.variables,a=e.data;return t.concat(e.data.map((function(t,s){var l=o.length===a.length?o[s]:o[0],u=l.label||{},c=u.radius?u.radius:e.radius,h=(2*n+t)/i*Math.PI-Math.PI/2;if(n+=t,!l.label)return null;var f="number"==typeof u.radiusIncrement?u.radiusIncrement:3,p="function"==typeof u.textAlign?u.textAlign(h):null;_D(p)&&(p=u.textAlign||(h'))),size:[s[0].getImage().getImage().width/2,n]});return l.push(new $y({image:h})),l}(u,s,a))),function(t,e,r){if(!_D(t.label)){var o=new $y,a=By.getValue(t.label.text,r),s=By.getValue(t.label.align,r),l=By.getValue(t.label.baseline,r),u=t.label.offset?t.label.offset[0]:void 0,c=t.label.offset?t.label.offset[1]:void 0,h=new zg({color:By.getValue(t.label.color||"#000000",r)}),f=new Yg({font:By.getValue(t.label.font,r),rotateWithView:By.getValue(t.label.rotate,r),scale:By.getValue(t.label.scale,r),offsetX:By.getValue(u,r),offsetY:By.getValue(c,r),fill:h,textAlign:Object.values(i).includes(s)?s:"center",textBaseline:Object.values(n).includes(l)?l:"top",text:void 0===a?void 0:String(a),rotation:By.getValue(t.label.rotation,r)});_D(t.label.stroke)||f.setStroke(new Bg({color:By.getValue(t.label.stroke.color,r),width:By.getValue(t.label.stroke.width,r),lineCap:By.getValue(t.label.stroke.linecap,r),lineJoin:By.getValue(t.label.stroke.linejoin,r),lineDash:By.getValue(t.label.stroke.linedash,r),lineDashOffset:By.getValue(t.label.stroke.linedashoffset,r),miterLimit:By.getValue(t.label.stroke.miterlimit,r)})),o.setText(f),e.push(o)}}(s,u,a),u}}},{key:"applyToLayer",value:function(t){t.getFeatures().forEach(this.applyToFeature,this)}},{key:"applyToFeature",value:function(t){t.getImpl().getOLFeature().setStyle(this.olStyleFn_)}},{key:"formatDataRecursively_",value:function(t,e){var r=this;return Object.keys(t).reduce((function(n,i,o){var a=n;return"object"!==_z(n)&&(a={},"object"!==_z(t[n])&&r.setVal(a,t,n,e)),r.setVal(a,t,i),a}))}},{key:"setVal",value:function(t,e,r,n){var i=t;i[r]=By.getValue(e[r],n),!bD(e[r])||e[r]instanceof Array||(i[r]=this.formatDataRecursively_(e[r],n))}}])&&wz(e.prototype,r),o&&wz(e,o),s}(function(t){!function(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}}),e&&dz(t,e)}(r,t);var e=gz(r);function r(){return pz(this,r),e.apply(this,arguments)}return r}(Ny));Pz.CANVAS_PROPS={width:200,percentages:{left_right_content:5,item_side_margin:5,max_text_width:70},fixedProps:{rect_border_width:2,font_size:10,font_family:"sans-serif",text_stroke_color:"#fff",text_stroke_width:1,text_color:"#000",top_content:10,item_top_margin:10,text_line_height:15,rect_size:15}};var Rz=Pz;function Lz(t){return(Lz="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function Mz(t,e){for(var r=0;r M.style.Simple.deserialize(serializedParameters, 'M.style.Line'))"}}])&&Xz(e.prototype,r),n&&Xz(e,n),o}(Bm);$z.DEFAULT_NULL={fill:{color:"rgba(255, 255, 255, 0.4)",opacity:.4},stroke:{color:"#3399CC",width:1.5}};var Qz=$z;function tV(t,e){for(var r=0;re))&&!((a+=2)>=t.length);)o+=i;var r=e-o;return a>=t.length&&(a=t.length-2),[r?t[a-2]+(t[a]-t[a-2])*r/i:t[a-2],r?t[a-1]+(t[a+1]-t[a-1])*r/i:t[a-1],Math.atan2(t[a+1]-t[a-1],t[a]-t[a-2])]},u=.25*n.measureText(" ").width,c=0,h=0,f=2;fn[n.length-2]){for(var i=[],o=n.length-2;o>=0;o-=2)i.push(n[o]),i.push(n[o+1]);return i}return n}},{key:"formatStyle",value:function(t){var e=t;return null==e?null:(void 0===e&&(e=[new $y({text:new Yg})]),"function"==typeof e?e:function(){return[e]})}},{key:"draw",value:function(e,r,n,i){var o=this.getPath_(r,i,n.getRotateWithView());e.font=n.getFont(),e.textBaseline=n.getTextBaseline(),e.textAlign=n.getTextAlign(),e.lineWidth=n.getStroke()&&n.getStroke().getWidth()||t.DEFAULT.lineWidth,e.strokeStyle=n.getStroke()&&n.getStroke().getColor()||t.DEFAULT.lineColor,e.fillStyle=n.getFill()&&n.getFill().getColor()||t.DEFAULT.fillColor,e.textJustify="justify"===n.getTextAlign(),e.textOverflow=n.getTextOverflow?n.getTextOverflow():t.DEFAULT.textOverflow,e.minWidth=n.getMinWidth?n.getMinWidth():t.DEFAULT.minWidth,"function"==typeof e.textPath&&e.textPath(n.getText(),o),e.restore()}}],(r=null)&&tV(e.prototype,r),n&&tV(e,n),t}();eV.DEFAULT={lineWidth:0,lineColor:"#fff",fillColor:"#000",textOverflow:"",minWidth:0};var rV=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;if(dD(window.CanvasRenderingContext2D.prototype.textPath)&&(window.CanvasRenderingContext2D.prototype.textPath=eV.render),!(e.frameState.viewState.resolution>this.textPathMaxResolution_)){var r=e.frameState.extent,n=e.context;n.save(),n.scale(e.frameState.pixelRatio,e.frameState.pixelRatio);var i=null!=this.getSource()&&0===this.getSource().getFeatures().length;i||(this.getSource().getFeaturesInExtent(r).forEach((function(r){var i=null!=r.getStyle()?r.getStyle():t.getStyle(),o="function"==typeof i?i(r,e.frameState.viewState.resolution):i;o instanceof Array||(o=[o]),o.forEach((function(t){var i,o=(t instanceof Qz?t.getOptions().geometry:t.getGeometry())||r.getGeometry();switch("function"==typeof o&&(o=o(r)),o.getType()){case"MultiLineString":i=o.getLineString(0).getCoordinates();break;default:i=o.getCoordinates()}var a=t instanceof Qz?t.getOptions().text:t.textPath;null!=a&&a instanceof $x&&eV.draw(n,e.frameState.coordinateToPixelTransform,a,i)}))})),n.restore())}};ko.prototype.cspline=function(t){var e;return this.calcCSpline?this.csplineGeometryRevision===this.getRevision()&&this.csplineOption===JSON.stringify(t)||(this.csplineGeometry_=this.calcCSpline(t),this.csplineGeometryRevision=this.getRevision(),this.csplineOption=JSON.stringify(t),e=this.csplineGeometry_):e=this,e},hh.prototype.calcCSpline=function(t){var e=[];return this.getGeometries().forEach((function(t){return e.push(t.cspline())})),new hh(e)},eh.prototype.calcCSpline=function(t){var e=[];return this.getLineStrings().forEach((function(t){return e.push(t.cspline().getCoordinates())})),new eh(e)},Oa.prototype.calcCSpline=function(t){var e=[];return this.getLineStrings().forEach((function(t){return e.push(t.cspline().getCoordinates())})),new Oa(e)},ih.prototype.calcCSpline=function(t){var e=[];return this.getLineStrings().forEach((function(t){return e.push(t.cspline().getCoordinates())})),new ih(e)};var nV=function(t,e,r,n){var i=r-t,o=n-e;return Math.sqrt(i*i+o*o)};function iV(t){return(iV="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function oV(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},d=this.getCoordinates(),g="number"==typeof p.tension?p.tension:.5,y=p.resolution||this.getLength()/d.length/(p.pointsPerSeg||10),m=[],_=d.slice(0);for(d.length>2&&d[0][0]===d[d.length-1][0]&&d[0][1]===d[d.length-1][1]?(_.unshift(d[d.length-2]),_.push(d[1])):(_.unshift(d[0]),_.push(d[d.length-1])),f=1;f<_.length-2;f+=1){var v=nV(_[f][0],_[f][1],_[f+1][0],_[f+1][1]),b=Math.round(v/y),x=1;if(p.normalize){var w=nV(_[f+1][0],_[f+1][1],_[f-1][0],_[f-1][1]),E=nV(_[f+2][0],_[f+2][1],_[f][0],_[f][1]);x=wo.DEFAULT_WIDTH_LINE&&(s=o.DEFAULT_WIDTH_LINE)),e={color:a.getStroke().getColor(),width:s},a.getStroke().setWidth(s),n.setStyle(a)),this.drawGeometryToCanvas(n,t,e,s)}}])&&oV(e.prototype,r),n&&oV(e,n),o}(By);hV.DEFAULT_WIDTH_LINE=3;var fV=hV;function pV(t){return(pV="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function dV(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!e||r.length!==e);n=!0);}catch(t){i=!0,o=t}finally{try{n||null==s.return||s.return()}finally{if(i)throw o}}return r}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return gV(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return gV(t,e)}(t,e)||function(){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 gV(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r5&&void 0!==arguments[5]?arguments[5]:{};return yV(this,o),s=i.call(this,l,{}),_D(t)&&_l(uu("exception").no_attr_name),s.attributeName_=t,s.minRadius_=parseInt(e,10)||5,s.maxRadius_=parseInt(r,10)||15,s.style_=n,s.proportionalFunction_=a||EV,s.maxRadius_=this.maxRadius_&&_l(uu("exception").min_gt_max),this.update_(),this}},{key:"getMaxRadius",value:function(){return this.maxRadius_}},{key:"setMaxRadius",value:function(t){return this.maxRadius_=parseInt(t,10),t<=this.minRadius_&&_l(uu("exception").max_lt_min),this.update_(),this}},{key:"updateCanvas",value:function(){var t=this;this.updateCanvasPromise_=new Promise((function(e,r){if(!_D(t.layer_)){var n=t.styles_.filter((function(t){return t instanceof Bm}))[0],i=_D(n)?t.layer_.getStyle():n;if((i=_D(i)?t.style_:i)instanceof Bm){var a=i.clone();a instanceof q_||(a=new q_(a.getOptions()));var s=o.getSizeAttribute(a),l=a.clone(),u=a.clone(),c=t.getMaxRadius(),h=t.getMinRadius();l.set(s,c),u.set(s,h),t.loadCanvasImage(c,l.toImage(),(function(r){t.loadCanvasImage(h,u.toImage(),(function(n){t.drawGeometryToCanvas(r,n,e)}))}))}else _D(i)||(t.canvas_=i.canvas,e())}}))}},{key:"loadCanvasImage",value:function(t,e,r){var n=new Image;n.crossOrigin="Anonymous",n.onload=function(){r({image:n,value:t})},n.onerror=function(){r({value:t})},n.src=e}},{key:"drawGeometryToCanvas",value:function(t,e,r){var n=t.image,i=e.image;this.canvas_.height=n.height+5+i.height+5;var o=this.canvas_.getContext("2d");o.textBaseline="middle";var a=0,s=0;if(_D(n)||(a=n.width+5,s=n.height/2,/^https?:\/\//i.test(n.src)?(this.canvas_.height=130,o.fillText(" max: ".concat(this.maxValue_),85,40),o.drawImage(n,0,0,80,80)):(o.fillText(" max: ".concat(this.maxValue_),a,s),o.drawImage(n,0,0))),!_D(i)){var l=0;_D(n)||(l=n.width/2-i.width/2);var u=n.height+5;s=u+i.height/2,/^https?:\/\//i.test(i.src)?(o.fillText(" min: ".concat(this.minValue_),85,105),o.drawImage(i,20,85,40,40)):(o.fillText(" min: ".concat(this.minValue_),a,s),o.drawImage(i,l,u))}r()}},{key:"calculateStyle_",value:function(t,e,r){var n=this.proportionalFunction_,i=r;if(!_D(i)){i=i.clone();var a=[e.minRadius,e.maxRadius],s=a[0],l=a[1];_D(i.get("icon.src"))||(s=e.minRadius/o.SCALE_PROPORTION,l=e.maxRadius/o.SCALE_PROPORTION);var u=t.getAttribute(this.attributeName_);null==u&&console.warn("Warning: ".concat(this.attributeName_," value is null or empty."));var c=n(u,e.minValue,e.maxValue,s,l),h=e.maxValue-parseFloat(t.getAttribute(this.attributeName_));i.set(o.getSizeAttribute(i),c),i.set("zindex",h)}return i}},{key:"toJSON",value:function(){var t=this.getAttributeName(),e=this.getMinRadius(),r=this.getMaxRadius(),n=this.getStyles().map((function(t){return t.serialize()})),i=$D(this.getProportionalFunction()),o=HD({},this.getOptions());return{parameters:[t,e,r,n,i,o=$D(o)],deserializedMethod:"M.style.Proportional.deserialize"}}},{key:"ORDER",get:function(){return 3}}])&&mV(e.prototype,r),n&&mV(e,n),o}(Ob);OV.SCALE_PROPORTION=20;var SV=OV,IV=function(t){var e,r=t.radius,n=l.a.random().hex(),i=t.strokeColor,o=t.strokeWidth;switch(t.feature.getGeometry().type){case"Point":case"MultiPoint":e=new q_({radius:r,fill:{color:n},stroke:{color:i,width:o}});break;case"LineString":case"MultiLineString":e=new Qz({fill:{color:n},stroke:{color:i,width:o}});break;case"Polygon":case"MultiPolygon":e=new Km({fill:{color:n},stroke:{color:i,width:o}});break;default:e=null}return e};function CV(t){return(CV="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function TV(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var r=[],n=!0,i=!1,o=void 0;try{for(var a,s=t[Symbol.iterator]();!(n=(a=s.next()).done)&&(r.push(a.value),!e||r.length!==e);n=!0);}catch(t){i=!0,o=t}finally{try{n||null==s.return||s.return()}finally{if(i)throw o}}return r}(t,e)||function(t,e){if(!t)return;if("string"==typeof t)return PV(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return PV(t,e)}(t,e)||function(){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 PV(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r2&&void 0!==arguments[2]?arguments[2]:{};return RV(this,o),r=i.call(this,n,{}),_D(t)&&_l(uu("exception").no_attr_name),r.attributeName_=t,r.categoryStyles_=e,r}return e=o,n=[{key:"deserialize",value:function(t){var e=TV(t,4),r=e[0],n=e[1],i=e[2],o=e[3],a=r,s=n;Object.keys(n).forEach((function(t){s[t]=Em.deserialize(n[t])}));var l=QD(i),u=new Function(["attributeName","categoryStyles","options"],"return new M.style.Category(attributeName, categoryStyles, options)")(a,s,l),c=o.map((function(t){return Em.deserialize(t)}));return u.add(c),u}}],(r=[{key:"applyInternal",value:function(t){this.layer_=t,this.update_()}},{key:"getAttributeName",value:function(){return this.attributeName_}},{key:"setAttributeName",value:function(t){return this.attributeName_=t,this.update_(),this.refresh(),this}},{key:"getCategories",value:function(){return this.categoryStyles_}},{key:"setCategories",value:function(t){return this.categoryStyles_=t,this.update_(),this.refresh(),this}},{key:"getStyleForCategory",value:function(t){return this.categoryStyles_[t]}},{key:"setStyleForCategory",value:function(t,e){return this.categoryStyles_[t]=e,this.update_(),this.refresh(),this}},{key:"updateCanvas",value:function(){var t=this,e=[];this.updateCanvasPromise_=new Promise((function(r,n){return t.loadCanvasImages_(0,e,r)}))}},{key:"loadCanvasImages_",value:function(t,e,r){var n=this,i=this.getCategories(),o=Object.keys(i);if(t===o.length)this.drawGeometryToCanvas(e,r);else{var a=o[t],s=this.getStyleForCategory(a),l=new Image;l.crossOrigin="Anonymous",l.onload=function(){e.push({image:l,categoryName:a}),n.loadCanvasImages_(t+1,e,r)},l.onerror=function(){e.push({categoryName:a}),n.loadCanvasImages_(t+1,e,r)},s.updateCanvas(),s.get("icon.src")?JD(s.get("icon.src")).then((function(t){l.width=s.get("icon.scale")?t.width*s.get("icon.scale"):t.width,l.height=s.get("icon.scale")?t.height*s.get("icon.scale"):t.height,l.src=s.toImage()})):l.src=s.toImage()}}},{key:"drawGeometryToCanvas",value:function(t,e){var r=t.map((function(t){return t.image.height})),n=t.map((function(t){return t.image.width})),i=this.canvas_.getContext("2d");i.canvas.height=r.reduce((function(t,e){return t+e+5})),i.textBaseline="middle";var o=Math.max.apply(n,n);t.forEach((function(t,e){var n=t.image,a=t.categoryName,s=0,l=r.slice(0,e);_D(l)||(s=l.reduce((function(t,e){return t+e+5})),s+=5);var u=0;if(!_D(n)){u=n.height;var c=(o-n.width)/2;i.drawImage(n,c,s,n.width,n.height)}i.fillText(a,o+5,s+u/2)})),e()}},{key:"update_",value:function(){var t=this;if(!_D(this.layer_)){(_D(this.categoryStyles_)||0===Object.keys(this.categoryStyles_).length)&&(this.categoryStyles_=this.generateRandomCategories_());var e=this.categoryStyles_.other;this.layer_.getFeatures().forEach((function(r){var n=r.getAttribute(t.attributeName_),i=t.categoryStyles_[n];_D(i)?_D(e)||r.setStyle(e):r.setStyle(i)})),this.updateCanvas()}}},{key:"add",value:function(t){var e=t;return mD(e)||(e=[e]),e=e.filter((function(t){return t instanceof jb||t instanceof SV})),MV(jV(o.prototype),"add",this).call(this,e)}},{key:"generateRandomCategories_",value:function(){var t=this,e={};return _D(this.layer_)||this.layer_.getFeatures().forEach((function(r){var n=r.getAttribute(t.attributeName_);Object.prototype.hasOwnProperty.call(e,n)||(e[n]=IV({feature:r,radius:o.RANDOM_RADIUS_OPTION,strokeColor:o.RANDOM_STROKE_COLOR_OPTION,strokeWidth:o.RANDOM_STROKE_WIDTH_OPTION}))})),e}},{key:"toJSON",value:function(){var t=this.getAttributeName(),e=this.getCategories(),r={};Object.keys(e).forEach((function(t){r[t]=e[t].serialize()}));var n=HD({},this.getOptions());n=$D(n);var i=this.getStyles().map((function(t){return t.serialize()}));return{parameters:[t,r,n,i],deserializedMethod:"M.style.Category.deserialize"}}},{key:"ORDER",get:function(){return 2}}])&&LV(e.prototype,r),n&&LV(e,n),o}(Ob);FV.RANDOM_RADIUS_OPTION=10,FV.RANDOM_STROKE_WIDTH_OPTION=1,FV.RANDOM_STROKE_COLOR_OPTION="black";var DV=FV,GV=function(t){var e=[];return t.forEach((function(t){-1===e.indexOf(t)&&e.push(t)})),e},UV=function(t,e){for(var r=[],n=[],i=0,o=0;o=i+n[g][v-1]&&(r[h][v]=m,n[h][v]=i+n[g][v-1])}r[h][1]=1,n[h][1]=i}return{lowerClassLimits:r,varianceCombinations:n}},BV=function(t,e,r){var n=t.length-1,i=[],o=r;for(i[r]=t[t.length-1],i[0]=t[0];o>1;)i[o-1]=t[e[n][o]-2],n=e[n][o]-1,o-=1;return i},zV=function(t){var e=t;e=e||5;var r=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,n=GV(t),i=n.length<=r?n.length-1:r;t.sort((function(t,e){return t-e}));var o=UV(t,i),a=o.lowerClassLimits,s=BV(t,a,i),l=s.slice(1,s.length);return l};return Object.defineProperty(r,"name",{value:"jenks"}),r},VV=function(t){var e=t||5,r=function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e,n=GV(t),i=n.length<=r?n.length-1:r,o=t.length;t.sort((function(t,e){return t-e}));for(var a=Math.trunc(o/i),s=[],l=0;lt.length)&&(e=t.length);for(var r=0,n=new Array(e);r2&&void 0!==arguments[2]?arguments[2]:zV(),a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return HV(this,o),r=i.call(this,a,{}),_D(t)&&_l(uu("exception").no_attr_name),r.attributeName_=t,r.choroplethStyles_=e,r.quantification_=n,r.dataValues_=[],r.breakPoints_=[],r}return e=o,n=[{key:"DEFAULT_STYLE",value:function(t){return new Iw({point:{fill:{color:t,opacity:1},stroke:{color:"black",width:1},radius:5},line:{stroke:{color:t,width:1}},polygon:{fill:{color:t,opacity:1},stroke:{color:t,width:1}}})}},{key:"deserialize",value:function(t){var e,r=WV(t,5),n=r[0],i=r[1],o=r[2],a=r[3],s=r[4],l=n,u=i.map((function(t){return Em.deserialize(t)}));e="jenks"===o?zV():"quantile"===o?VV():QD(o);var c=QD(a),h=new Function(["attributeName","styles","quantification","options"],"return new M.style.Choropleth(attributeName, styles, quantification, options)")(l,u,e,c),f=s.map((function(t){return Em.deserialize(t)}));return h.add(f),h}}],(r=[{key:"applyInternal",value:function(t){this.layer_=t,this.update_()}},{key:"getAttributeName",value:function(){return this.attributeName_}},{key:"setAttributeName",value:function(t){return this.attributeName_=t,this.update_(),this.refresh(),this}},{key:"getQuantification",value:function(){return this.quantification_}},{key:"setQuantification",value:function(t){if(this.quantification_=t,!this.choroplethStyles_.some((function(t){return xD(t)}))){if(this.choroplethStyles_.length0){var e=[];this.updateCanvasPromise_=new Promise((function(r,n){return t.loadCanvasImages_(0,e,r)}))}}},{key:"loadCanvasImages_",value:function(t,e,r){var n=this;if(t===this.choroplethStyles_.length)this.drawGeometryToCanvas(e,r);else{var i=-1;t>0&&(i=this.breakPoints_[t-1]);var o=this.breakPoints_[t],a=new Image;a.crossOrigin="Anonymous",a.onload=function(){e.push({image:a,startLimit:eq(i),endLimit:eq(o)}),n.loadCanvasImages_(t+1,e,r)},a.onerror=function(){e.push({startLimit:eq(i),endLimit:eq(o)}),n.loadCanvasImages_(t+1,e,r)},this.choroplethStyles_[t].updateCanvas();var s=this.choroplethStyles_[t].toImage();xD(s)?a.src=s:s.then((function(t){a.src=t}))}}},{key:"drawGeometryToCanvas",value:function(t,e){var r=t.map((function(t){return t.image.height})),n=t.map((function(t){return t.image.width})),i=this.canvas_.getContext("2d");i.canvas.height=r.reduce((function(t,e){return t+e+5})),i.textBaseline="middle";var o=Math.max.apply(n,n);t.forEach((function(t,e){var n=t.image,a=t.startLimit,s=t.endLimit,l=0,u=r.slice(0,e);_D(u)||(l=u.reduce((function(t,e){return t+e+5})),l+=5);var c=0;_D(n)||(c=n.height,i.drawImage(n,0,l)),a<0?i.fillText(" x <= ".concat(s),o+5,l+c/2):i.fillText("".concat(a," < x <= ").concat(s),o+5,l+c/2)}),this),e()}},{key:"getValues",value:function(){var t=this,e=[];return _D(this.layer_)||this.layer_.getFeatures().forEach((function(r){try{var n=parseFloat(r.getAttribute(t.attributeName_));Number.isNaN(n)||e.push(n)}catch(t){}}),this),e}},{key:"update_",value:function(){var t,e,r=this;if(!_D(this.layer_)){var n=this.layer_.getFeatures();if(!_D(n))if(this.dataValues_=this.getValues(),_D(this.choroplethStyles_)||!_D(this.choroplethStyles_)&&(xD(this.choroplethStyles_[0])||xD(this.choroplethStyles_[1]))){this.breakPoints_=this.quantification_(this.dataValues_);var i=this.choroplethStyles_&&this.choroplethStyles_[0]?this.choroplethStyles_[0]:o.START_COLOR_DEFAULT,a=this.choroplethStyles_&&this.choroplethStyles_[1]?this.choroplethStyles_[1]:o.END_COLOR_DEFAULT,s=this.breakPoints_.length,l=WD(i,a,s);mD(l)||(l=[l]),this.choroplethStyles_=(t=l,e=o.DEFAULT_STYLE,t.map((function(t){return e(t)})))}else this.breakPoints_=this.quantification_(this.dataValues_,this.choroplethStyles_.length);for(var u=function(t){new qV(r.attributeName_,r.breakPoints_[t]).execute(n).forEach((function(e){return e.setStyle(r.choroplethStyles_[t])}))},c=this.breakPoints_.length-1;c>-1;c-=1)u(c);this.updateCanvas()}}},{key:"add",value:function(t){var e=t;return mD(e)||(e=[e]),e=e.filter((function(t){return t instanceof jb||t instanceof SV})),KV(tq(o.prototype),"add",this).call(this,e)}},{key:"toJSON",value:function(){var t=this.getAttributeName(),e=this.getChoroplethStyles().map((function(t){return t.serialize()})),r=this.getQuantification();r=_D(r.name)?$D(r):r.name;var n=HD({},this.getOptions());return{parameters:[t,e,r,n=$D(n),this.getStyles().map((function(t){return t.serialize()}))],deserializedMethod:"M.style.Choropleth.deserialize"}}},{key:"ORDER",get:function(){return 2}}])&&ZV(e.prototype,r),n&&ZV(e,n),o}(Ob);rq.START_COLOR_DEFAULT="red",rq.END_COLOR_DEFAULT="brown";var nq=rq;function iq(t,e){for(var r=0;rt.length)&&(e=t.length);for(var r=0,n=new Array(e);r1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};hq(this,o);var a=r,s=n;if(xD(t)||vD(t)||_l(uu("exception").no_empty),HD(a,o.DEFAULT_OPTIONS),_D(a.gradient)||mD(a.gradient)||(a.gradient=[a.gradient]),a.gradient=a.gradient||o.DEFAULT_OPTIONS.gradient,a.gradient.length<2){var l=XD(a.gradient[0]);a.gradient.push(l)}a.blur=_D(a.blur)?o.DEFAULT_OPTIONS.blur:parseFloat(a.blur),a.radius=_D(a.radius)?o.DEFAULT_OPTIONS.radius:parseFloat(a.radius),a.weight=t,s.opacity=Number.isNaN(parseFloat(s.opacity))?1:parseFloat(s.opacity);var u=new Fz(t,a,s);return(e=i.call(this,a,u)).attribute_=t,e.options_=a,e.vendorOptions_=s,e}return e=o,n=[{key:"deserialize",value:function(t){var e=sq(t,3),r=e[0],n=e[1],i=e[2],o=r,a=QD(n),s=QD(i);return new Function(["attribute","options","vendorOptions"],"return new M.style.Heatmap(attribute, options, vendorOptions)")(o,a,s)}}],(r=[{key:"unapply",value:function(t){this.layer_=null,this.getImpl().unapply(t)}},{key:"getAttributeName",value:function(){return this.attribute_}},{key:"setAttributeName",value:function(t){this.attribute_=t,this.options_.weight=this.attribute_,this.update_()}},{key:"getGradient",value:function(){return this.options_.gradient}},{key:"setGradient",value:function(t){var e=t;if(mD(e)||(e=[e]),e.length<2){var r=XD(e[0]);e.push(r)}this.options_.gradient=e,this.update_()}},{key:"getRadius",value:function(){return this.options_.radius}},{key:"setRadius",value:function(t){this.options_.radius=t,this.update_()}},{key:"getBlurSize",value:function(){return this.options_.blur}},{key:"setBlurSize",value:function(t){this.options_.blur=t,this.update_()}},{key:"update_",value:function(){var t=this.getImpl();t.unapply(this.layer_),t.setOptions(this.options_,this.vendorOptions_),t.applyToLayer(this.layer_)}},{key:"drawGeometryToCanvas",value:function(){var t=[this.getImpl().getMinWeight(),this.getImpl().getMaxWeight()],e=t[0],r=t[1],n=this.canvas_.getContext("2d"),i=n.createLinearGradient(0,150,200,150),o=ZD([0,1],this.options_.gradient.length);this.options_.gradient.forEach((function(t,e){return i.addColorStop(o[e],t)})),n.fillStyle=i,n.fillRect(0,20,200,30),n.fillStyle="#000",n.font="10px sans-serif",n.fillText(e,0,60),n.fillText(r,199,60)}},{key:"updateCanvas",value:function(){this.drawGeometryToCanvas()}},{key:"toJSON",value:function(){var t=this.getAttributeName(),e=this.getOptions();return{parameters:[t,{gradient:lq(e.gradient),blur:e.blur,radius:e.radius,weight:e.weight},this.vendorOptions_],deserializedMethod:"M.style.Heatmap.deserialize"}}}])&&fq(e.prototype,r),n&&fq(e,n),o}(Em);mq.DEFAULT_OPTIONS={gradient:["#00f","#0ff","#0f0","#ff0","#f00"],blur:15,radius:10};var _q,vq,bq,xq,wq,Eq,Oq,Sq,Iq=mq,Cq=function(t,e){return t.interfaces_&&t.interfaces_.indexOf(e)>-1};function Tq(){}class Pq{constructor(){Pq.constructor_.apply(this,arguments)}setOrdinate(t,e,r){}size(){}getOrdinate(t,e){}getCoordinate(){if(1===arguments.length){}else if(2===arguments.length){}}getCoordinateCopy(t){}getDimension(){}getX(t){}expandEnvelope(t){}copy(){}getY(t){}toCoordinateArray(){}getClass(){return Pq}get interfaces_(){return[Tq]}}Pq.constructor_=function(){},Pq.X=0,Pq.Y=1,Pq.Z=2,Pq.M=3;class Rq{constructor(){Rq.constructor_.apply(this,arguments)}create(){if(1===arguments.length){if(arguments[0]instanceof Array){}else if(Cq(arguments[0],Pq)){}}else if(2===arguments.length){}}getClass(){return Rq}get interfaces_(){return[]}}function Lq(t){this.message=t}Rq.constructor_=function(){};class Mq{constructor(){Mq.constructor_.apply(this,arguments)}filter(t){}getClass(){return Mq}get interfaces_(){return[]}}function Nq(){}function Aq(){}Mq.constructor_=function(){};class kq{constructor(){kq.constructor_.apply(this,arguments)}static equalsWithTolerance(t,e,r){return Math.abs(t-e)<=r}getClass(){return kq}get interfaces_(){return[]}}function jq(t,e){this.low=0|e,this.high=0|t}function Fq(){}function Dq(){}function Gq(t){this.name="RuntimeException",this.message=t,this.stack=(new Error).stack,Error.call(this,t)}kq.constructor_=function(){},jq.toBinaryString=function(t){for(var e="",r=2147483648;r>0;r>>>=1)e+=(t.high&r)===r?"1":"0";for(r=2147483648;r>0;r>>>=1)e+=(t.low&r)===r?"1":"0";return e},Fq.isNaN=t=>Number.isNaN(t),Fq.isInfinite=t=>!Number.isFinite(t),Fq.MAX_VALUE=Number.MAX_VALUE,"function"==typeof Float64Array&&"function"==typeof Int32Array?(Eq=2146435072,Oq=new Float64Array(1),Sq=new Int32Array(Oq.buffer),Fq.doubleToLongBits=function(t){Oq[0]=t;var e=0|Sq[0],r=0|Sq[1];return(r&Eq)===Eq&&0!=(1048575&r)&&0!==e&&(e=0,r=2146959360),new jq(r,e)},Fq.longBitsToDouble=function(t){return Sq[0]=t.low,Sq[1]=t.high,Oq[0]}):(_q=1023,vq=Math.log2,bq=Math.floor,xq=Math.pow,wq=function(){for(var t=53;t>0;t--){var e=xq(2,t)-1;if(bq(vq(e))+1===t)return e}return 0}(),Fq.doubleToLongBits=function(t){var e,r,n,i,o,a,s,l,u;if(t<0||1/t===Number.NEGATIVE_INFINITY?(a=1<<31,t=-t):a=0,0===t)return new jq(l=a,u=0);if(t===1/0)return new jq(l=2146435072|a,u=0);if(t!=t)return new jq(l=2146959360,u=0);if(i=0,u=0,(e=bq(t))>1)if(e<=wq)(i=bq(vq(e)))<=20?(u=0,l=e<<20-i&1048575):(u=e%(r=xq(2,n=i-20))<<32-n,l=e/r&1048575);else for(n=e,u=0;0!==(n=bq(r=n/2));)i++,u>>>=1,u|=(1&l)<<31,l>>>=1,r!==n&&(l|=524288);if(s=i+_q,o=0===e,e=t-e,i<52&&0!==e)for(n=0;;){if((r=2*e)>=1?(e=r-1,o?(s--,o=!1):(n<<=1,n|=1,i++)):(e=r,o?0==--s&&(i++,o=!1):(n<<=1,i++)),20===i)l|=n,n=0;else if(52===i){u|=n;break}if(1===r){i<20?l|=n<<20-i:i<52&&(u|=n<<52-i);break}}return l|=s<<20,new jq(l|=a,u)},Fq.longBitsToDouble=function(t){var e,r,n,i,o=t.high,a=t.low;r=o&1<<31?-1:1,n=((2146435072&o)>>20)-_q,i=0,e=1<<19;for(var s=1;s<=20;s++)o&e&&(i+=xq(2,-s)),e>>>=1;for(e=1<<31,s=21;s<=52;s++)a&e&&(i+=xq(2,-s)),e>>>=1;if(-1023===n){if(0===i)return 0*r;n=-1022}else{if(1024===n)return 0===i?r/0:NaN;i+=1}return r*i*xq(2,n)}),Gq.prototype=Object.create(Error.prototype),Gq.prototype.constructor=Error;class Uq extends Gq{constructor(){super(),Uq.constructor_.apply(this,arguments)}getClass(){return Uq}get interfaces_(){return[]}}Uq.constructor_=function(){if(0===arguments.length)Gq.constructor_.call(this);else if(1===arguments.length){let t=arguments[0];Gq.constructor_.call(this,t)}};class Bq{constructor(){Bq.constructor_.apply(this,arguments)}static shouldNeverReachHere(){if(0===arguments.length)Bq.shouldNeverReachHere(null);else if(1===arguments.length){let t=arguments[0];throw new Uq("Should never reach here"+(null!==t?": "+t:""))}}static isTrue(){if(1===arguments.length){let t=arguments[0];Bq.isTrue(t,null)}else if(2===arguments.length){let t=arguments[1];if(!arguments[0])throw null===t?new Uq:new Uq(t)}}static equals(){if(2===arguments.length){let t=arguments[0],e=arguments[1];Bq.equals(t,e,null)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];if(!e.equals(t))throw new Uq("Expected "+t+" but encountered "+e+(null!==r?": "+r:""))}}getClass(){return Bq}get interfaces_(){return[]}}Bq.constructor_=function(){};class zq{constructor(){zq.constructor_.apply(this,arguments)}static hashCode(){if(1===arguments.length&&"number"==typeof arguments[0]){let e=arguments[0];var t=Fq.doubleToLongBits(e);return Math.trunc(t^t>>>32)}}setOrdinate(t,e){switch(t){case zq.X:this.x=e;break;case zq.Y:this.y=e;break;case zq.Z:this.z=e;break;default:throw new Lq("Invalid ordinate index: "+t)}}equals2D(){if(1===arguments.length){let t=arguments[0];return this.x===t.x&&this.y===t.y}if(2===arguments.length){let t=arguments[0],e=arguments[1];return!!kq.equalsWithTolerance(this.x,t.x,e)&&!!kq.equalsWithTolerance(this.y,t.y,e)}}getOrdinate(t){switch(t){case zq.X:return this.x;case zq.Y:return this.y;case zq.Z:return this.z}throw new Lq("Invalid ordinate index: "+t)}equals3D(t){return this.x===t.x&&this.y===t.y&&(this.z===t.z||Fq.isNaN(this.z)&&Fq.isNaN(t.z))}equals(t){return t instanceof zq&&this.equals2D(t)}equalInZ(t,e){return kq.equalsWithTolerance(this.z,t.z,e)}compareTo(t){var e=t;return this.xe.x?1:this.ye.y?1:0}clone(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return Bq.shouldNeverReachHere("this shouldn't happen because this class is Cloneable"),null;throw t}}copy(){return new zq(this)}toString(){return"("+this.x+", "+this.y+", "+this.z+")"}distance3D(t){var e=this.x-t.x,r=this.y-t.y,n=this.z-t.z;return Math.sqrt(e*e+r*r+n*n)}distance(t){var e=this.x-t.x,r=this.y-t.y;return Math.sqrt(e*e+r*r)}hashCode(){var t=17;return t=37*(t=37*t+zq.hashCode(this.x))+zq.hashCode(this.y)}setCoordinate(t){this.x=t.x,this.y=t.y,this.z=t.z}getClass(){return zq}get interfaces_(){return[Nq,Tq,Aq]}}class Vq{constructor(){Vq.constructor_.apply(this,arguments)}static compare(t,e){return te?1:Fq.isNaN(t)?Fq.isNaN(e)?0:-1:Fq.isNaN(e)?1:0}compare(t,e){var r=t,n=e,i=Vq.compare(r.x,n.x);if(0!==i)return i;var o=Vq.compare(r.y,n.y);return 0!==o?o:this._dimensionsToTest<=2?0:Vq.compare(r.z,n.z)}getClass(){return Vq}get interfaces_(){return[Dq]}}Vq.constructor_=function(){if(this._dimensionsToTest=2,0===arguments.length)Vq.constructor_.call(this,2);else if(1===arguments.length){let t=arguments[0];if(2!==t&&3!==t)throw new Lq("only 2 or 3 dimensions may be specified");this._dimensionsToTest=t}},zq.DimensionalComparator=Vq,zq.constructor_=function(){if(this.x=null,this.y=null,this.z=null,0===arguments.length)zq.constructor_.call(this,0,0);else if(1===arguments.length){let t=arguments[0];zq.constructor_.call(this,t.x,t.y,t.z)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];zq.constructor_.call(this,t,e,zq.NULL_ORDINATE)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];this.x=t,this.y=e,this.z=r}},zq.serialVersionUID=0x5cbf2c235c7e5800,zq.NULL_ORDINATE=Fq.NaN,zq.X=0,zq.Y=1,zq.Z=2;class qq{constructor(){qq.constructor_.apply(this,arguments)}static intersects(){if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];return r.x>=(t.xe.x?t.x:e.x)&&r.y>=(t.ye.y?t.y:e.y)}if(4===arguments.length){let i=arguments[0],o=arguments[1],a=arguments[2],s=arguments[3];var t=Math.min(a.x,s.x),e=Math.max(a.x,s.x),r=Math.min(i.x,o.x),n=Math.max(i.x,o.x);return!(r>e)&&(!(ne)&&!(nt._minx?this._minx:t._minx,r=this._miny>t._miny?this._miny:t._miny,n=this._maxx=this._minx&&t.getMaxX()<=this._maxx&&t.getMinY()>=this._miny&&t.getMaxY()<=this._maxy)}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];return!this.isNull()&&(t>=this._minx&&t<=this._maxx&&e>=this._miny&&e<=this._maxy)}}intersects(){if(1===arguments.length){if(arguments[0]instanceof qq){let t=arguments[0];return!this.isNull()&&!t.isNull()&&!(t._minx>this._maxx||t._maxxthis._maxy||t._maxythis._maxx)&&(!((t.x>e.x?t.x:e.x)this._maxy)&&!((t.y>e.y?t.y:e.y)this._maxx||tthis._maxy||ethis._maxx&&(this._maxx=t._maxx),t._minythis._maxy&&(this._maxy=t._maxy))}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.isNull()?(this._minx=t,this._maxx=t,this._miny=e,this._maxy=e):(tthis._maxx&&(this._maxx=t),ethis._maxy&&(this._maxy=e))}}minExtent(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return te._minx?1:this._minye._miny?1:this._maxxe._maxx?1:this._maxye._maxy?1:0}translate(t,e){if(this.isNull())return null;this.init(this.getMinX()+t,this.getMaxX()+t,this.getMinY()+e,this.getMaxY()+e)}toString(){return"Env["+this._minx+" : "+this._maxx+", "+this._miny+" : "+this._maxy+"]"}setToNull(){this._minx=0,this._maxx=-1,this._miny=0,this._maxy=-1}getHeight(){return this.isNull()?0:this._maxy-this._miny}maxExtent(){if(this.isNull())return 0;var t=this.getWidth(),e=this.getHeight();return t>e?t:e}expandBy(){if(1===arguments.length){let t=arguments[0];this.expandBy(t,t)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];if(this.isNull())return null;this._minx-=t,this._maxx+=t,this._miny-=e,this._maxy+=e,(this._minx>this._maxx||this._miny>this._maxy)&&this.setToNull()}}contains(){if(1===arguments.length){if(arguments[0]instanceof qq){let t=arguments[0];return this.covers(t)}if(arguments[0]instanceof zq){let t=arguments[0];return this.covers(t)}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];return this.covers(t,e)}}centre(){return this.isNull()?null:new zq((this.getMinX()+this.getMaxX())/2,(this.getMinY()+this.getMaxY())/2)}init(){if(0===arguments.length)this.setToNull();else if(1===arguments.length){if(arguments[0]instanceof zq){let t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof qq){let t=arguments[0];this._minx=t._minx,this._maxx=t._maxx,this._miny=t._miny,this._maxy=t._maxy}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.init(t.x,e.x,t.y,e.y)}else if(4===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2],n=arguments[3];tt._maxx&&(e=this._minx-t._maxx);var r=0;return this._maxyt._maxy&&(r=this._miny-t._maxy),0===e?r:0===r?e:Math.sqrt(e*e+r*r)}hashCode(){var t=17;return t=37*(t=37*(t=37*(t=37*t+zq.hashCode(this._minx))+zq.hashCode(this._maxx))+zq.hashCode(this._miny))+zq.hashCode(this._maxy)}getClass(){return qq}get interfaces_(){return[Nq,Aq]}}qq.constructor_=function(){if(this._minx=null,this._maxx=null,this._miny=null,this._maxy=null,0===arguments.length)this.init();else if(1===arguments.length){if(arguments[0]instanceof zq){let t=arguments[0];this.init(t.x,t.x,t.y,t.y)}else if(arguments[0]instanceof qq){let t=arguments[0];this.init(t)}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.init(t.x,e.x,t.y,e.y)}else if(4===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2],n=arguments[3];this.init(t,e,r,n)}},qq.serialVersionUID=0x51845cd552189800;class Yq{constructor(){Yq.constructor_.apply(this,arguments)}isGeometryCollection(){return this.getTypeCode()===Yq.TYPECODE_GEOMETRYCOLLECTION}getFactory(){return this._factory}getGeometryN(t){return this}getArea(){return 0}isRectangle(){return!1}equals(){if(arguments[0]instanceof Yq){let t=arguments[0];return null!==t&&this.equalsTopo(t)}if(arguments[0]instanceof Object){let e=arguments[0];if(!(e instanceof Yq))return!1;var t=e;return this.equalsExact(t)}}equalsExact(t){return this===t||this.equalsExact(t,0)}geometryChanged(){this.apply(Yq.geometryChangedFilter)}geometryChangedAction(){this._envelope=null}equalsNorm(t){return null!==t&&this.norm().equalsExact(t.norm())}getLength(){return 0}getNumGeometries(){return 1}compareTo(){if(1===arguments.length){let e=arguments[0];var t=e;return this.getTypeCode()!==t.getTypeCode()?this.getTypeCode()-t.getTypeCode():this.isEmpty()&&t.isEmpty()?0:this.isEmpty()?-1:t.isEmpty()?1:this.compareToSameClass(e)}if(2===arguments.length){let e=arguments[0],r=arguments[1];t=e;return this.getTypeCode()!==t.getTypeCode()?this.getTypeCode()-t.getTypeCode():this.isEmpty()&&t.isEmpty()?0:this.isEmpty()?-1:t.isEmpty()?1:this.compareToSameClass(e,r)}}getUserData(){return this._userData}getSRID(){return this._SRID}getEnvelope(){return this.getFactory().toGeometry(this.getEnvelopeInternal())}checkNotGeometryCollection(t){if(t.getTypeCode()===Yq.TYPECODE_GEOMETRYCOLLECTION)throw new Lq("This method does not support GeometryCollection arguments")}equal(t,e,r){return 0===r?t.equals(e):t.distance(e)<=r}norm(){var t=this.copy();return t.normalize(),t}getPrecisionModel(){return this._factory.getPrecisionModel()}getEnvelopeInternal(){return null===this._envelope&&(this._envelope=this.computeEnvelopeInternal()),new qq(this._envelope)}setSRID(t){this._SRID=t}setUserData(t){this._userData=t}compare(t,e){for(var r=t.iterator(),n=e.iterator();r.hasNext()&&n.hasNext();){var i=r.next(),o=n.next(),a=i.compareTo(o);if(0!==a)return a}return r.hasNext()?1:n.hasNext()?-1:0}hashCode(){return this.getEnvelopeInternal().hashCode()}isGeometryCollectionOrDerived(){return this.getTypeCode()===Yq.TYPECODE_GEOMETRYCOLLECTION||this.getTypeCode()===Yq.TYPECODE_MULTIPOINT||this.getTypeCode()===Yq.TYPECODE_MULTILINESTRING||this.getTypeCode()===Yq.TYPECODE_MULTIPOLYGON}get interfaces_(){return[Tq,Nq,Aq]}getClass(){return Yq}static hasNonEmptyElements(t){for(var e=0;e0}getClass(){return Zq}get interfaces_(){return[Xq]}}Zq.constructor_=function(){};class Kq{constructor(){Kq.constructor_.apply(this,arguments)}isInBoundary(t){return t>1}getClass(){return Kq}get interfaces_(){return[Xq]}}Kq.constructor_=function(){};class Jq{constructor(){Jq.constructor_.apply(this,arguments)}isInBoundary(t){return 1===t}getClass(){return Jq}get interfaces_(){return[Xq]}}function $q(){}function Qq(){}function tY(t){this.message=t||""}function eY(){}function rY(t){this.message=t||""}function nY(t){this.message=t||""}function iY(){this.array_=[],arguments[0]instanceof Qq&&this.addAll(arguments[0])}Jq.constructor_=function(){},Xq.Mod2BoundaryNodeRule=Hq,Xq.EndPointBoundaryNodeRule=Zq,Xq.MultiValentEndPointBoundaryNodeRule=Kq,Xq.MonoValentEndPointBoundaryNodeRule=Jq,Xq.constructor_=function(){},Xq.MOD2_BOUNDARY_RULE=new Hq,Xq.ENDPOINT_BOUNDARY_RULE=new Zq,Xq.MULTIVALENT_ENDPOINT_BOUNDARY_RULE=new Kq,Xq.MONOVALENT_ENDPOINT_BOUNDARY_RULE=new Jq,Xq.OGC_SFS_BOUNDARY_RULE=Xq.MOD2_BOUNDARY_RULE,$q.prototype.hasNext=function(){},$q.prototype.next=function(){},$q.prototype.remove=function(){},Qq.prototype.add=function(){},Qq.prototype.addAll=function(){},Qq.prototype.isEmpty=function(){},Qq.prototype.iterator=function(){},Qq.prototype.size=function(){},Qq.prototype.toArray=function(){},Qq.prototype.remove=function(){},tY.prototype=new Error,tY.prototype.name="IndexOutOfBoundsException",eY.prototype=Object.create(Qq.prototype),eY.prototype.constructor=eY,eY.prototype.get=function(){},eY.prototype.set=function(){},eY.prototype.isEmpty=function(){},rY.prototype=new Error,rY.prototype.name="NoSuchElementException",nY.prototype=new Error,nY.prototype.name="OperationNotSupported",iY.prototype=Object.create(eY.prototype),iY.prototype.constructor=iY,iY.prototype.ensureCapacity=function(){},iY.prototype.interfaces_=[eY,Qq],iY.prototype.add=function(t){return 1===arguments.length?this.array_.push(t):this.array_.splice(arguments[0],0,arguments[1]),!0},iY.prototype.clear=function(){this.array_=[]},iY.prototype.addAll=function(t){for(var e=t.iterator();e.hasNext();)this.add(e.next());return!0},iY.prototype.set=function(t,e){var r=this.array_[t];return this.array_[t]=e,r},iY.prototype.iterator=function(){return new oY(this)},iY.prototype.get=function(t){if(t<0||t>=this.size())throw new tY;return this.array_[t]},iY.prototype.isEmpty=function(){return 0===this.array_.length},iY.prototype.size=function(){return this.array_.length},iY.prototype.toArray=function(){for(var t=[],e=0,r=this.array_.length;e=1)if(this.get(this.size()-1).equals2D(t))return null;super.add.call(this,t)}else if(arguments[0]instanceof Object&&"boolean"==typeof arguments[1]){let t=arguments[0],e=arguments[1];return this.add(t,e),!0}}else if(3===arguments.length){if("boolean"==typeof arguments[2]&&arguments[0]instanceof Array&&"boolean"==typeof arguments[1]){let e=arguments[0],r=arguments[1];if(arguments[2])for(var t=0;t=0;t--)this.add(e[t],r);return!0}if("boolean"==typeof arguments[2]&&Number.isInteger(arguments[0])&&arguments[1]instanceof zq){let t=arguments[0],r=arguments[1];if(!arguments[2]){var e=this.size();if(e>0){if(t>0)if(this.get(t-1).equals2D(r))return null;if(to&&(r=-1);for(t=i;t!==o;t+=r)this.add(e[t],n);return!0}}closeRing(){this.size()>0&&this.add(new zq(this.get(0)),!1)}getClass(){return aY}get interfaces_(){return[]}}aY.constructor_=function(){if(0===arguments.length);else if(1===arguments.length){let t=arguments[0];this.ensureCapacity(t.length),this.add(t,!0)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.ensureCapacity(t.length),this.add(t,e)}},aY.coordArrayType=new Array(0).fill(null);class sY{constructor(){sY.constructor_.apply(this,arguments)}static log10(t){var e=Math.log(t);return Fq.isInfinite(e)||Fq.isNaN(e)?e:e/sY.LOG_10}static min(t,e,r,n){var i=t;return er?r:t}if(Number.isInteger(arguments[2])&&Number.isInteger(arguments[0])&&Number.isInteger(arguments[1])){let t=arguments[0],e=arguments[1],r=arguments[2];return tr?r:t}}static wrap(t,e){return t<0?e- -t%e:t%e}static max(){if(3===arguments.length){let e=arguments[1],r=arguments[2];return e>(t=arguments[0])&&(t=e),r>t&&(t=r),t}if(4===arguments.length){let e=arguments[1],r=arguments[2],n=arguments[3];var t;return e>(t=arguments[0])&&(t=e),r>t&&(t=r),n>t&&(t=n),t}}static average(t,e){return(t+e)/2}getClass(){return sY}get interfaces_(){return[]}}function lY(){}sY.constructor_=function(){},sY.LOG_10=Math.log(10),lY.arraycopy=(t,e,r,n,i)=>{let o=0;for(let a=e;a({"line.separator":"\n"}[t]);class uY{constructor(){uY.constructor_.apply(this,arguments)}static isRing(t){return!(t.length<4)&&!!t[0].equals2D(t[t.length-1])}static ptNotInList(t,e){for(var r=0;r=t?e:[]}static indexOf(t,e){for(var r=0;r0)&&(e=t[r]);return e}static extract(t,e,r){e=sY.clamp(e,0,t.length);var n=(r=sY.clamp(r,-1,t.length))-e+1;r<0&&(n=0),e>=t.length&&(n=0),rn.length)return 1;if(0===r.length)return 0;var i=uY.compare(r,n);return uY.isEqualReversed(r,n)?0:i}OLDcompare(t,e){var r=t,n=e;if(r.lengthn.length)return 1;if(0===r.length)return 0;for(var i=uY.increasingDirection(r),o=uY.increasingDirection(n),a=i>0?0:r.length-1,s=o>0?0:r.length-1,l=0;l0))return e.value;e=e.right}}return null},wY.prototype.put=function(t,e){if(null===this.root_)return this.root_={key:t,value:e,left:null,right:null,parent:null,color:0,getValue(){return this.value},getKey(){return this.key}},this.size_=1,null;var r,n,i=this.root_;do{if(r=i,(n=t.compareTo(i.key))<0)i=i.left;else{if(!(n>0)){var o=i.value;return i.value=e,o}i=i.right}}while(null!==i);var a={key:t,left:null,right:null,value:e,parent:r,color:0,getValue(){return this.value},getKey(){return this.key}};return n<0?r.left=a:r.right=a,this.fixAfterInsertion(a),this.size_++,null},wY.prototype.fixAfterInsertion=function(t){for(t.color=1;null!=t&&t!=this.root_&&1==t.parent.color;){var e;if(_Y(t)==bY(_Y(_Y(t))))1==mY(e=xY(_Y(_Y(t))))?(vY(_Y(t),0),vY(e,0),vY(_Y(_Y(t)),1),t=_Y(_Y(t))):(t==xY(_Y(t))&&(t=_Y(t),this.rotateLeft(t)),vY(_Y(t),0),vY(_Y(_Y(t)),1),this.rotateRight(_Y(_Y(t))));else 1==mY(e=bY(_Y(_Y(t))))?(vY(_Y(t),0),vY(e,0),vY(_Y(_Y(t)),1),t=_Y(_Y(t))):(t==bY(_Y(t))&&(t=_Y(t),this.rotateRight(t)),vY(_Y(t),0),vY(_Y(_Y(t)),1),this.rotateLeft(_Y(_Y(t))))}this.root_.color=0},wY.prototype.values=function(){var t=new iY,e=this.getFirstEntry();if(null!==e)for(t.add(e.value);null!==(e=wY.successor(e));)t.add(e.value);return t},wY.prototype.entrySet=function(){var t=new gY,e=this.getFirstEntry();if(null!==e)for(t.add(e);null!==(e=wY.successor(e));)t.add(e);return t},wY.prototype.rotateLeft=function(t){if(null!=t){var e=t.right;t.right=e.left,null!=e.left&&(e.left.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.left==t?t.parent.left=e:t.parent.right=e,e.left=t,t.parent=e}},wY.prototype.rotateRight=function(t){if(null!=t){var e=t.left;t.left=e.right,null!=e.right&&(e.right.parent=t),e.parent=t.parent,null==t.parent?this.root_=e:t.parent.right==t?t.parent.right=e:t.parent.left=e,e.right=t,t.parent=e}},wY.prototype.getFirstEntry=function(){var t=this.root_;if(null!=t)for(;null!=t.left;)t=t.left;return t},wY.successor=function(t){if(null===t)return null;if(null!==t.right){for(var e=t.right;null!==e.left;)e=e.left;return e}e=t.parent;for(var r=t;null!==e&&r===e.right;)r=e,e=e.parent;return e},wY.prototype.size=function(){return this.size_},wY.prototype.containsKey=function(t){for(var e=this.root_;null!==e;){var r=t.compareTo(e.key);if(r<0)e=e.left;else{if(!(r>0))return!0;e=e.right}}return!1};class EY{constructor(){EY.constructor_.apply(this,arguments)}getClass(){return EY}get interfaces_(){return[]}}function OY(){}function SY(){this.array_=[],arguments[0]instanceof Qq&&this.addAll(arguments[0])}EY.constructor_=function(){},OY.prototype=new dY,SY.prototype=new OY,SY.prototype.contains=function(t){for(var e=0,r=this.array_.length;et<=32&&t>=0||127==t,PY.toUpperCase=t=>t.toUpperCase();class RY{constructor(){RY.constructor_.apply(this,arguments)}static toDimensionSymbol(t){switch(t){case RY.FALSE:return RY.SYM_FALSE;case RY.TRUE:return RY.SYM_TRUE;case RY.DONTCARE:return RY.SYM_DONTCARE;case RY.P:return RY.SYM_P;case RY.L:return RY.SYM_L;case RY.A:return RY.SYM_A}throw new Lq("Unknown dimension value: "+t)}static toDimensionValue(t){switch(PY.toUpperCase(t)){case RY.SYM_FALSE:return RY.FALSE;case RY.SYM_TRUE:return RY.TRUE;case RY.SYM_DONTCARE:return RY.DONTCARE;case RY.SYM_P:return RY.P;case RY.SYM_L:return RY.L;case RY.SYM_A:return RY.A}throw new Lq("Unknown dimension symbol: "+t)}getClass(){return RY}get interfaces_(){return[]}}RY.constructor_=function(){},RY.P=0,RY.L=1,RY.A=2,RY.FALSE=-1,RY.TRUE=-2,RY.DONTCARE=-3,RY.SYM_FALSE="F",RY.SYM_TRUE="T",RY.SYM_DONTCARE="*",RY.SYM_P="0",RY.SYM_L="1",RY.SYM_A="2";class LY{constructor(){LY.constructor_.apply(this,arguments)}filter(t){}getClass(){return LY}get interfaces_(){return[]}}LY.constructor_=function(){};class MY{constructor(){MY.constructor_.apply(this,arguments)}filter(t,e){}isDone(){}isGeometryChanged(){}getClass(){return MY}get interfaces_(){return[]}}MY.constructor_=function(){};class NY extends Yq{constructor(){super(),NY.constructor_.apply(this,arguments)}computeEnvelopeInternal(){for(var t=new qq,e=0;e=0;){var a=i.substring(0,o);n.add(a),o=(i=i.substring(o+r)).indexOf(e)}i.length>0&&n.add(i);for(var s=new Array(n.size()).fill(null),l=0;l0)for(var o=i;o0&&r.append(" ");for(var i=0;i0&&r.append(","),r.append(VY.toString(o.getOrdinate(n,i)))}return r.append(")"),r.toString()}}static ensureValidRing(t,e){var r=e.size();return 0===r?e:r<=3?YY.createClosedRing(t,e,4):e.getOrdinate(0,Pq.X)===e.getOrdinate(r-1,Pq.X)&&e.getOrdinate(0,Pq.Y)===e.getOrdinate(r-1,Pq.Y)?e:YY.createClosedRing(t,e,r+1)}static createClosedRing(t,e,r){var n=t.create(r,e.getDimension()),i=e.size();YY.copy(e,0,n,0,i);for(var o=i;o0){var r=this._points.copy();YY.reverse(r),this._points=r}return null}}}getCoordinate(){return this.isEmpty()?null:this._points.getCoordinate(0)}getBoundaryDimension(){return this.isClosed()?RY.FALSE:0}isClosed(){return!this.isEmpty()&&this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints()-1))}getEndPoint(){return this.isEmpty()?null:this.getPointN(this.getNumPoints()-1)}getTypeCode(){return Yq.TYPECODE_LINESTRING}getDimension(){return 1}getLength(){return FY.ofLine(this._points)}getNumPoints(){return this._points.size()}reverse(){var t=this._points.copy();return YY.reverse(t),this.getFactory().createLineString(t)}compareToSameClass(){if(1===arguments.length){for(var t=arguments[0],e=0,r=0;e= 2)");this._points=t}isCoordinate(t){for(var e=0;et?1:0},JY.isNaN=t=>Number.isNaN(t);class $Y{constructor(){$Y.constructor_.apply(this,arguments)}static sqr(t){return $Y.valueOf(t).selfMultiply(t)}static valueOf(){if("string"==typeof arguments[0]){let t=arguments[0];return $Y.parse(t)}if("number"==typeof arguments[0]){return new $Y(arguments[0])}}static sqrt(t){return $Y.valueOf(t).sqrt()}static parse(t){for(var e=0,r=t.length;PY.isWhitespace(t.charAt(e));)e++;var n=!1;if(e=r);){var u=t.charAt(e);if(e++,PY.isDigit(u)){var c=u-"0";o.selfMultiply($Y.TEN),o.selfAdd(c),a++}else{if("."!==u){if("e"===u||"E"===u){var h=t.substring(e);try{l=JY.parseInt(h)}catch(e){throw e instanceof NumberFormatException?new NumberFormatException("Invalid exponent "+h+" in string "+t):e}break}throw new NumberFormatException("Unexpected character '"+u+"' at position "+e+" in string "+t)}s=a}}var f=o,p=a-s-l;if(0===p)f=o;else if(p>0){var d=$Y.TEN.pow(p);f=o.divide(d)}else if(p<0){d=$Y.TEN.pow(-p);f=o.multiply(d)}return n?f.negate():f}static createNaN(){return new $Y(Fq.NaN,Fq.NaN)}static copy(t){return new $Y(t)}static magnitude(t){var e=Math.abs(t),r=Math.log(e)/Math.log(10),n=Math.trunc(Math.floor(r));return 10*Math.pow(10,n)<=e&&(n+=1),n}static stringOfChar(t,e){for(var r=new KY,n=0;n9?(c=!0,h="9"):h="0"+u,a.append(h),r=r.subtract($Y.valueOf(u)).multiply($Y.TEN),c&&r.selfAdd($Y.TEN);var f=!0,p=$Y.magnitude(r._hi);if(p<0&&Math.abs(p)>=s-l&&(f=!1),!f)break}return e[0]=n,a.toString()}sqr(){return this.multiply(this)}doubleValue(){return this._hi+this._lo}subtract(){if(arguments[0]instanceof $Y){let t=arguments[0];return this.add(t.negate())}if("number"==typeof arguments[0]){let t=arguments[0];return this.add(-t)}}equals(){if(1===arguments.length&&arguments[0]instanceof $Y){let t=arguments[0];return this._hi===t._hi&&this._lo===t._lo}}isZero(){return 0===this._hi&&0===this._lo}selfSubtract(){if(arguments[0]instanceof $Y){let t=arguments[0];return this.isNaN()?this:this.selfAdd(-t._hi,-t._lo)}if("number"==typeof arguments[0]){let t=arguments[0];return this.isNaN()?this:this.selfAdd(-t,0)}}getSpecialNumberString(){return this.isZero()?"0.0":this.isNaN()?"NaN ":null}min(t){return this.le(t)?this:t}selfDivide(){if(1===arguments.length){if(arguments[0]instanceof $Y){let t=arguments[0];return this.selfDivide(t._hi,t._lo)}if("number"==typeof arguments[0]){let t=arguments[0];return this.selfDivide(t,0)}}else if(2===arguments.length){let l=arguments[0],u=arguments[1];var t,e,r,n,i=null,o=null,a=null,s=null;return r=this._hi/l,s=(i=(a=$Y.SPLIT*r)-(i=a-r))*(o=(s=$Y.SPLIT*l)-(o=s-l))-(n=r*l)+i*(e=l-o)+(t=r-i)*o+t*e,s=r+(a=(this._hi-n-s+this._lo-r*u)/l),this._hi=s,this._lo=r-s+a,this}}dump(){return"DD<"+this._hi+", "+this._lo+">"}divide(){if(arguments[0]instanceof $Y){let l=arguments[0];var t,e,r,n,i=null,o=null,a=null,s=null;return t=(r=this._hi/l._hi)-(i=(a=$Y.SPLIT*r)-(i=a-r)),s=i*(o=(s=$Y.SPLIT*l._hi)-(o=s-l._hi))-(n=r*l._hi)+i*(e=l._hi-o)+t*o+t*e,a=(this._hi-n-s+this._lo-r*l._lo)/l._hi,new $Y(s=r+a,r-s+a)}if("number"==typeof arguments[0]){let t=arguments[0];return Fq.isNaN(t)?$Y.createNaN():$Y.copy(this).selfDivide(t,0)}}ge(t){return this._hi>t._hi||this._hi===t._hi&&this._lo>=t._lo}pow(t){if(0===t)return $Y.valueOf(1);var e=new $Y(this),r=$Y.valueOf(1),n=Math.abs(t);if(n>1)for(;n>0;)n%2==1&&r.selfMultiply(e),(n/=2)>0&&(e=e.sqr());else r=e;return t<0?r.reciprocal():r}ceil(){if(this.isNaN())return $Y.NaN;var t=Math.ceil(this._hi),e=0;return t===this._hi&&(e=Math.ceil(this._lo)),new $Y(t,e)}compareTo(t){var e=t;return this._hie._hi?1:this._loe._lo?1:0}rint(){return this.isNaN()?this:this.add(.5).floor()}setValue(){if(arguments[0]instanceof $Y){let t=arguments[0];return this.init(t),this}if("number"==typeof arguments[0]){let t=arguments[0];return this.init(t),this}}max(t){return this.ge(t)?this:t}sqrt(){if(this.isZero())return $Y.valueOf(0);if(this.isNegative())return $Y.NaN;var t=1/Math.sqrt(this._hi),e=this._hi*t,r=$Y.valueOf(e),n=this.subtract(r.sqr())._hi*(.5*t);return r.add(n)}selfAdd(){if(1===arguments.length){if(arguments[0]instanceof $Y){let t=arguments[0];return this.selfAdd(t._hi,t._lo)}if("number"==typeof arguments[0]){let a=arguments[0];var t=null,e=null,r=null,n=null,i=null,o=null;return n=(r=this._hi+a)-(i=r-this._hi),e=(o=(n=a-i+(this._hi-n))+this._lo)+(r-(t=r+o)),this._hi=t+e,this._lo=e+(t-this._hi),this}}else if(2===arguments.length){let c=arguments[0],h=arguments[1];t=null,e=null;var a,s=null;r=null,n=null,i=null,o=null;r=this._hi+c,a=this._lo+h,n=r-(i=r-this._hi),s=a-(o=a-this._lo);var l=(t=r+(i=(n=c-i+(this._hi-n))+a))+(i=(s=h-o+(this._lo-s))+(e=i+(r-t))),u=i+(t-l);return this._hi=l,this._lo=u,this}}selfMultiply(){if(1===arguments.length){if(arguments[0]instanceof $Y){let t=arguments[0];return this.selfMultiply(t._hi,t._lo)}if("number"==typeof arguments[0]){let t=arguments[0];return this.selfMultiply(t,0)}}else if(2===arguments.length){let l=arguments[0],u=arguments[1];var t,e,r=null,n=null,i=null,o=null;r=(i=$Y.SPLIT*this._hi)-this._hi,o=$Y.SPLIT*l,r=i-r,t=this._hi-r,n=o-l;var a=(i=this._hi*l)+(o=r*(n=o-n)-i+r*(e=l-n)+t*n+t*e+(this._hi*u+this._lo*l)),s=o+(r=i-a);return this._hi=a,this._lo=s,this}}selfSqr(){return this.selfMultiply(this)}floor(){if(this.isNaN())return $Y.NaN;var t=Math.floor(this._hi),e=0;return t===this._hi&&(e=Math.floor(this._lo)),new $Y(t,e)}negate(){return this.isNaN()?this:new $Y(-this._hi,-this._lo)}clone(){try{return null}catch(t){if(t instanceof CloneNotSupportedException)return null;throw t}}multiply(){if(arguments[0]instanceof $Y){let t=arguments[0];return t.isNaN()?$Y.createNaN():$Y.copy(this).selfMultiply(t)}if("number"==typeof arguments[0]){let t=arguments[0];return Fq.isNaN(t)?$Y.createNaN():$Y.copy(this).selfMultiply(t,0)}}isNaN(){return Fq.isNaN(this._hi)}intValue(){return Math.trunc(this._hi)}toString(){var t=$Y.magnitude(this._hi);return t>=-3&&t<=20?this.toStandardNotation():this.toSciNotation()}toStandardNotation(){var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),r=this.extractSignificantDigits(!0,e),n=e[0]+1,i=r;if("."===r.charAt(0))i="0"+r;else if(n<0)i="0."+$Y.stringOfChar("0",-n)+r;else if(-1===r.indexOf(".")){var o=n-r.length;i=r+$Y.stringOfChar("0",o)+".0"}return this.isNegative()?"-"+i:i}reciprocal(){var t,e,r,n,i=null,o=null,a=null,s=null;t=(r=1/this._hi)-(i=(a=$Y.SPLIT*r)-(i=a-r)),o=(s=$Y.SPLIT*this._hi)-this._hi;var l=r+(a=(1-(n=r*this._hi)-(s=i*(o=s-o)-n+i*(e=this._hi-o)+t*o+t*e)-r*this._lo)/this._hi);return new $Y(l,r-l+a)}toSciNotation(){if(this.isZero())return $Y.SCI_NOT_ZERO;var t=this.getSpecialNumberString();if(null!==t)return t;var e=new Array(1).fill(null),r=this.extractSignificantDigits(!1,e),n=$Y.SCI_NOT_EXPONENT_CHAR+e[0];if("0"===r.charAt(0))throw new IllegalStateException("Found leading zero: "+r);var i="";r.length>1&&(i=r.substring(1));var o=r.charAt(0)+"."+i;return this.isNegative()?"-"+o+n:o+n}abs(){return this.isNaN()?$Y.NaN:this.isNegative()?this.negate():new $Y(this)}isPositive(){return this._hi>0||0===this._hi&&this._lo>0}lt(t){return this._hit._hi||this._hi===t._hi&&this._lo>t._lo}isNegative(){return this._hi<0||0===this._hi&&this._lo<0}trunc(){return this.isNaN()?$Y.NaN:this.isPositive()?this.floor():this.ceil()}signum(){return this._hi>0?1:this._hi<0?-1:this._lo>0?1:this._lo<0?-1:0}getClass(){return $Y}get interfaces_(){return[Aq,Nq,Tq]}}$Y.constructor_=function(){if(this._hi=0,this._lo=0,0===arguments.length)this.init(0);else if(1===arguments.length){if("number"==typeof arguments[0]){let t=arguments[0];this.init(t)}else if(arguments[0]instanceof $Y){let t=arguments[0];this.init(t)}else if("string"==typeof arguments[0]){let t=arguments[0];$Y.constructor_.call(this,$Y.parse(t))}}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.init(t,e)}},$Y.PI=new $Y(3.141592653589793,12246467991473532e-32),$Y.TWO_PI=new $Y(6.283185307179586,24492935982947064e-32),$Y.PI_2=new $Y(1.5707963267948966,6123233995736766e-32),$Y.E=new $Y(2.718281828459045,14456468917292502e-32),$Y.NaN=new $Y(Fq.NaN,Fq.NaN),$Y.EPS=123259516440783e-46,$Y.SPLIT=134217729,$Y.MAX_PRINT_DIGITS=32,$Y.TEN=$Y.valueOf(10),$Y.ONE=$Y.valueOf(1),$Y.SCI_NOT_EXPONENT_CHAR="E",$Y.SCI_NOT_ZERO="0.0E0";class QY{constructor(){QY.constructor_.apply(this,arguments)}static orientationIndex(t,e,r){var n=QY.orientationIndexFilter(t,e,r);if(n<=1)return n;var i=$Y.valueOf(e.x).selfAdd(-t.x),o=$Y.valueOf(e.y).selfAdd(-t.y),a=$Y.valueOf(r.x).selfAdd(-e.x),s=$Y.valueOf(r.y).selfAdd(-e.y);return i.selfMultiply(s).selfSubtract(o.selfMultiply(a)).signum()}static signOfDet2x2(){if(arguments[0]instanceof $Y){let t=arguments[1],e=arguments[2],r=arguments[3];return arguments[0].multiply(r).selfSubtract(t.multiply(e)).signum()}if("number"==typeof arguments[0]){let i=arguments[0],o=arguments[1],a=arguments[2],s=arguments[3];var t=$Y.valueOf(i),e=$Y.valueOf(o),r=$Y.valueOf(a),n=$Y.valueOf(s);return t.multiply(n).selfSubtract(e.multiply(r)).signum()}}static intersection(t,e,r,n){var i=$Y.valueOf(n.y).selfSubtract(r.y).selfMultiply($Y.valueOf(e.x).selfSubtract(t.x)),o=$Y.valueOf(n.x).selfSubtract(r.x).selfMultiply($Y.valueOf(e.y).selfSubtract(t.y)),a=i.subtract(o),s=$Y.valueOf(n.x).selfSubtract(r.x).selfMultiply($Y.valueOf(t.y).selfSubtract(r.y)),l=$Y.valueOf(n.y).selfSubtract(r.y).selfMultiply($Y.valueOf(t.x).selfSubtract(r.x)),u=s.subtract(l).selfDivide(a).doubleValue(),c=$Y.valueOf(t.x).selfAdd($Y.valueOf(e.x).selfSubtract(t.x).selfMultiply(u)).doubleValue(),h=$Y.valueOf(e.x).selfSubtract(t.x).selfMultiply($Y.valueOf(t.y).selfSubtract(r.y)),f=$Y.valueOf(e.y).selfSubtract(t.y).selfMultiply($Y.valueOf(t.x).selfSubtract(r.x)),p=h.subtract(f).selfDivide(a).doubleValue(),d=$Y.valueOf(r.y).selfAdd($Y.valueOf(n.y).selfSubtract(r.y).selfMultiply(p)).doubleValue();return new zq(c,d)}static orientationIndexFilter(t,e,r){var n=null,i=(t.x-r.x)*(e.y-r.y),o=(t.y-r.y)*(e.x-r.x),a=i-o;if(i>0){if(o<=0)return QY.signum(a);n=i+o}else{if(!(i<0))return QY.signum(a);if(o>=0)return QY.signum(a);n=-i-o}var s=QY.DP_SAFE_EPSILON*n;return a>=s||-a>=s?QY.signum(a):2}static signum(t){return t>0?1:t<0?-1:0}getClass(){return QY}get interfaces_(){return[]}}QY.constructor_=function(){},QY.DP_SAFE_EPSILON=1e-15;class tW{constructor(){tW.constructor_.apply(this,arguments)}static index(t,e,r){return QY.orientationIndex(t,e,r)}static isCCW(t){var e=t.length-1;if(e<3)throw new Lq("Ring has fewer than 4 points, so orientation cannot be determined");for(var r=t[0],n=0,i=1;i<=e;i++){var o=t[i];o.y>r.y&&(r=o,n=i)}var a=n;do{(a-=1)<0&&(a=e)}while(t[a].equals2D(r)&&a!==n);var s=n;do{s=(s+1)%e}while(t[s].equals2D(r)&&s!==n);var l=t[a],u=t[s];if(l.equals2D(r)||u.equals2D(r)||l.equals2D(u))return!1;var c=tW.index(l,r,u);return 0===c?l.x>u.x:c>0}getClass(){return tW}get interfaces_(){return[]}}tW.constructor_=function(){},tW.CLOCKWISE=-1,tW.RIGHT=tW.CLOCKWISE,tW.COUNTERCLOCKWISE=1,tW.LEFT=tW.COUNTERCLOCKWISE,tW.COLLINEAR=0,tW.STRAIGHT=tW.COLLINEAR;class eW{constructor(){eW.constructor_.apply(this,arguments)}getClass(){return eW}get interfaces_(){return[]}}eW.constructor_=function(){};class rW extends Yq{constructor(){super(),rW.constructor_.apply(this,arguments)}computeEnvelopeInternal(){return this._shell.getEnvelopeInternal()}getCoordinates(){if(this.isEmpty())return[];for(var t=new Array(this.getNumPoints()).fill(null),e=-1,r=this._shell.getCoordinates(),n=0;n=1&&this.getCoordinateSequence().size()= 4)")}getGeometryType(){return Yq.TYPENAME_LINEARRING}copy(){return new iW(this._points.copy(),this._factory)}getClass(){return iW}get interfaces_(){return[]}}iW.constructor_=function(){if(arguments[0]instanceof Array&&arguments[1]instanceof EW){let t=arguments[0],e=arguments[1];iW.constructor_.call(this,e.getCoordinateSequenceFactory().create(t),e)}else if(Cq(arguments[0],Pq)&&arguments[1]instanceof EW){let t=arguments[0],e=arguments[1];WY.constructor_.call(this,t,e),this.validateConstruction()}},iW.MINIMUM_VALID_SIZE=4,iW.serialVersionUID=-0x3b229e262367a600;class oW extends NY{constructor(){super(),oW.constructor_.apply(this,arguments)}equalsExact(){if(2===arguments.length&&"number"==typeof arguments[1]&&arguments[0]instanceof Yq){let t=arguments[0],e=arguments[1];return!!this.isEquivalentClass(t)&&super.equalsExact.call(this,t,e)}return super.equalsExact.apply(this,arguments)}getBoundaryDimension(){return 1}getTypeCode(){return Yq.TYPECODE_MULTIPOLYGON}getDimension(){return 2}reverse(){for(var t=this._geometries.length,e=new Array(t).fill(null),r=0;r0){var t=new qY(17*this._coordinates.length);t.append("("),t.append(this._coordinates[0]);for(var e=1;e3&&(e=3),e<2?new hW(t):new hW(t,e)}}getClass(){return fW}get interfaces_(){return[Rq,Aq]}}fW.constructor_=function(){},fW.serialVersionUID=-0x38e49fa6cf6f2e00,fW.instanceObject=new fW;var pW=Object.defineProperty;var dW=function(t,e){function r(t){if(!this||this.constructor!==r)return new r(t);this._keys=[],this._values=[],this._itp=[],this.objectOnly=e,t&&gW.call(this,t)}e||pW(t,"size",{get:_W});return t.constructor=r,r.prototype=t,r}({delete:function(t){this.has(t)&&(this._keys.splice(IY,1),this._values.splice(IY,1),this._itp.forEach((function(t){IY-1},has:function(t){return yW.call(this,this._keys,t)},get:function(t){return this.has(t)?this._values[IY]:void 0},set:function(t,e){return this.has(t)?this._values[IY]=e:this._values[this._keys.push(t)-1]=e,this},keys:function(){return mW(this._itp,this._keys)},values:function(){return mW(this._itp,this._values)},entries:function(){return mW(this._itp,this._keys,this._values)},forEach:function(t,e){for(var r=this.entries();;){var n=r.next();if(n.done)break;t.call(e,n.value[1],n.value[0],this)}},clear:function(){(this._keys||0).length=this._values.length=0}});function gW(t){this.add?t.forEach(this.add,this):t.forEach((function(t){this.set(t[0],t[1])}),this)}function yW(t,e){if(this.objectOnly&&e!==Object(e))throw new TypeError("Invalid value used as weak collection key");if(e!=e||0===e)for(IY=t.length;IY--&&((r=t[IY])!==(n=e)&&(r==r||n==n)););else IY=t.indexOf(e);var r,n;return IY>-1}function mW(t,e,r){var n=[0],i=!1;return t.push(n),{next:function(){var o,a=n[0];return!i&&at.add(e)),t},bW.prototype.size=function(){return this.map_.size()};class xW{constructor(){xW.constructor_.apply(this,arguments)}static mostPrecise(t,e){return t.compareTo(e)>=0?t:e}equals(t){if(!(t instanceof xW))return!1;var e=t;return this._modelType===e._modelType&&this._scale===e._scale}compareTo(t){var e=t,r=this.getMaximumSignificantDigits(),n=e.getMaximumSignificantDigits();return new JY(r).compareTo(new JY(n))}getScale(){return this._scale}isFloating(){return this._modelType===xW.FLOATING||this._modelType===xW.FLOATING_SINGLE}getType(){return this._modelType}toString(){var t="UNKNOWN";return this._modelType===xW.FLOATING?t="Floating":this._modelType===xW.FLOATING_SINGLE?t="Floating-Single":this._modelType===xW.FIXED&&(t="Fixed (Scale="+this.getScale()+")"),t}makePrecise(){if("number"==typeof arguments[0]){let t=arguments[0];return Fq.isNaN(t)||this._modelType===xW.FLOATING_SINGLE?t:this._modelType===xW.FIXED?Math.round(t*this._scale)/this._scale:t}if(arguments[0]instanceof zq){let t=arguments[0];if(this._modelType===xW.FLOATING)return null;t.x=this.makePrecise(t.x),t.y=this.makePrecise(t.y)}}getMaximumSignificantDigits(){var t=16;return this._modelType===xW.FLOATING?t=16:this._modelType===xW.FLOATING_SINGLE?t=6:this._modelType===xW.FIXED&&(t=1+Math.trunc(Math.ceil(Math.log(this.getScale())/Math.log(10)))),t}setScale(t){this._scale=Math.abs(t)}getClass(){return xW}get interfaces_(){return[Aq,Nq]}}class wW{constructor(){wW.constructor_.apply(this,arguments)}readResolve(){return wW.nameToTypeMap.get(this._name)}toString(){return this._name}getClass(){return wW}get interfaces_(){return[Aq]}}wW.constructor_=function(){this._name=null;let t=arguments[0];this._name=t,wW.nameToTypeMap.put(t,this)},wW.serialVersionUID=-552860263173159e4,wW.nameToTypeMap=new bW,xW.Type=wW,xW.constructor_=function(){if(this._modelType=null,this._scale=null,0===arguments.length)this._modelType=xW.FLOATING;else if(1===arguments.length)if(arguments[0]instanceof wW){let t=arguments[0];this._modelType=t,t===xW.FIXED&&this.setScale(1)}else if("number"==typeof arguments[0]){let t=arguments[0];this._modelType=xW.FIXED,this.setScale(t)}else if(arguments[0]instanceof xW){let t=arguments[0];this._modelType=t._modelType,this._scale=t._scale}},xW.serialVersionUID=0x6bee6404e9a25c00,xW.FIXED=new wW("FIXED"),xW.FLOATING=new wW("FLOATING"),xW.FLOATING_SINGLE=new wW("FLOATING SINGLE"),xW.maximumPreciseValue=9007199254740992;class EW{constructor(){EW.constructor_.apply(this,arguments)}static toMultiPolygonArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toGeometryArray(t){if(null===t)return null;var e=new Array(t.size()).fill(null);return t.toArray(e)}static getDefaultCoordinateSequenceFactory(){return fW.instance()}static toMultiLineStringArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toLineStringArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toMultiPointArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toLinearRingArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toPointArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static toPolygonArray(t){var e=new Array(t.size()).fill(null);return t.toArray(e)}static createPointFromInternalCoord(t,e){return e.getPrecisionModel().makePrecise(t),e.getFactory().createPoint(t)}toGeometry(t){return t.isNull()?this.createPoint():t.getMinX()===t.getMaxX()&&t.getMinY()===t.getMaxY()?this.createPoint(new zq(t.getMinX(),t.getMinY())):t.getMinX()===t.getMaxX()||t.getMinY()===t.getMaxY()?this.createLineString([new zq(t.getMinX(),t.getMinY()),new zq(t.getMaxX(),t.getMaxY())]):this.createPolygon(this.createLinearRing([new zq(t.getMinX(),t.getMinY()),new zq(t.getMinX(),t.getMaxY()),new zq(t.getMaxX(),t.getMaxY()),new zq(t.getMaxX(),t.getMinY()),new zq(t.getMinX(),t.getMinY())]),null)}createLineString(){if(0===arguments.length)return this.createLineString(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){let t=arguments[0];return this.createLineString(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(Cq(arguments[0],Pq)){return new WY(arguments[0],this)}}}createMultiLineString(){if(0===arguments.length)return new AY(null,this);if(1===arguments.length){return new AY(arguments[0],this)}}buildGeometry(t){for(var e=null,r=!1,n=!1,i=t.iterator();i.hasNext();){var o=i.next(),a=o.getClass();null===e&&(e=a),a!==e&&(r=!0),o instanceof NY&&(n=!0)}if(null===e)return this.createGeometryCollection();if(r||n)return this.createGeometryCollection(EW.toGeometryArray(t));var s=t.iterator().next();if(t.size()>1){if(s instanceof rW)return this.createMultiPolygon(EW.toPolygonArray(t));if(s instanceof WY)return this.createMultiLineString(EW.toLineStringArray(t));if(s instanceof HY)return this.createMultiPoint(EW.toPointArray(t));Bq.shouldNeverReachHere("Unhandled class: "+s.getClass().getName())}return s}createMultiPointFromCoords(t){return this.createMultiPoint(null!==t?this.getCoordinateSequenceFactory().create(t):null)}createPoint(){if(0===arguments.length)return this.createPoint(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof zq){let t=arguments[0];return this.createPoint(null!==t?this.getCoordinateSequenceFactory().create([t]):null)}if(Cq(arguments[0],Pq)){return new HY(arguments[0],this)}}}getCoordinateSequenceFactory(){return this._coordinateSequenceFactory}createPolygon(){if(0===arguments.length)return this.createPolygon(null,null);if(1===arguments.length){if(Cq(arguments[0],Pq)){let t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof Array){let t=arguments[0];return this.createPolygon(this.createLinearRing(t))}if(arguments[0]instanceof iW){let t=arguments[0];return this.createPolygon(t,null)}}else if(2===arguments.length){return new rW(arguments[0],arguments[1],this)}}getSRID(){return this._SRID}createGeometryCollection(){if(0===arguments.length)return new NY(null,this);if(1===arguments.length){return new NY(arguments[0],this)}}createGeometry(t){return new aW(this).edit(t,new class{edit(){if(2===arguments.length&&arguments[1]instanceof Yq&&Cq(arguments[0],Pq)){let t=arguments[0];return this._coordinateSequenceFactory.create(t)}}})}getPrecisionModel(){return this._precisionModel}createLinearRing(){if(0===arguments.length)return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));if(1===arguments.length){if(arguments[0]instanceof Array){let t=arguments[0];return this.createLinearRing(null!==t?this.getCoordinateSequenceFactory().create(t):null)}if(Cq(arguments[0],Pq)){return new iW(arguments[0],this)}}}createMultiPolygon(){if(0===arguments.length)return new oW(null,this);if(1===arguments.length){return new oW(arguments[0],this)}}createMultiPoint(){if(0===arguments.length)return new nW(null,this);if(1===arguments.length){if(arguments[0]instanceof Array){return new nW(arguments[0],this)}if(Cq(arguments[0],Pq)){let n=arguments[0];if(null===n)return this.createMultiPoint(new Array(0).fill(null));for(var t=new Array(n.size()).fill(null),e=0;et.x+" "+t.y,point(t){return LW.coordinate.call(this,t._coordinates._coordinates[0])},multipoint(t){var e=[];for(let r=0,n=t._geometries.length;r1||s<0||s>1)&&(i=!0)}}else i=!0;return i?sY.min(DW.pointToSegment(t,r,n),DW.pointToSegment(e,r,n),DW.pointToSegment(r,t,e),DW.pointToSegment(n,t,e)):0}static pointToSegment(t,e,r){if(e.x===r.x&&e.y===r.y)return t.distance(e);var n=(r.x-e.x)*(r.x-e.x)+(r.y-e.y)*(r.y-e.y),i=((t.x-e.x)*(r.x-e.x)+(t.y-e.y)*(r.y-e.y))/n;if(i<=0)return t.distance(e);if(i>=1)return t.distance(r);var o=((e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y))/n;return Math.abs(o)*Math.sqrt(n)}static pointToLinePerpendicular(t,e,r){var n=(r.x-e.x)*(r.x-e.x)+(r.y-e.y)*(r.y-e.y),i=((e.y-t.y)*(r.x-e.x)-(e.x-t.x)*(r.y-e.y))/n;return Math.abs(i)*Math.sqrt(n)}static pointToSegmentString(t,e){if(0===e.length)throw new Lq("Line array must contain at least one vertex");for(var r=t.distance(e[0]),n=0;ni?n:i;else{var a=Math.abs(t.x-e.x),s=Math.abs(t.y-e.y);0!==(o=n>i?a:s)||t.equals(e)||(o=Math.max(a,s))}return Bq.isTrue(!(0===o&&!t.equals(e)),"Bad distance calculation"),o}static nonRobustComputeEdgeDistance(t,e,r){var n=t.x-e.x,i=t.y-e.y,o=Math.sqrt(n*n+i*i);return Bq.isTrue(!(0===o&&!t.equals(e)),"Invalid distance calculation"),o}getIndexAlongSegment(t,e){return this.computeIntLineIndex(),this._intLineIndex[t][e]}getTopologySummary(){var t=new qY;return this.isEndPoint()&&t.append(" endpoint"),this._isProper&&t.append(" proper"),this.isCollinear()&&t.append(" collinear"),t.toString()}computeIntersection(t,e,r,n){this._inputLines[0][0]=t,this._inputLines[0][1]=e,this._inputLines[1][0]=r,this._inputLines[1][1]=n,this._result=this.computeIntersect(t,e,r,n)}getIntersectionNum(){return this._result}computeIntLineIndex(){if(0===arguments.length)null===this._intLineIndex&&(this._intLineIndex=Array(2).fill().map(()=>Array(2)),this.computeIntLineIndex(0),this.computeIntLineIndex(1));else if(1===arguments.length){let t=arguments[0];this.getEdgeDistance(t,0)>this.getEdgeDistance(t,1)?(this._intLineIndex[t][0]=0,this._intLineIndex[t][1]=1):(this._intLineIndex[t][0]=1,this._intLineIndex[t][1]=0)}}isProper(){return this.hasIntersection()&&this._isProper}setPrecisionModel(t){this._precisionModel=t}isInteriorIntersection(){if(0===arguments.length)return!!this.isInteriorIntersection(0)||!!this.isInteriorIntersection(1);if(1===arguments.length){let e=arguments[0];for(var t=0;tArray(2)),this._intPt=new Array(2).fill(null),this._intLineIndex=null,this._isProper=null,this._pa=null,this._pb=null,this._precisionModel=null,this._intPt[0]=new zq,this._intPt[1]=new zq,this._pa=this._intPt[0],this._pb=this._intPt[1],this._result=0},GW.DONT_INTERSECT=0,GW.DO_INTERSECT=1,GW.COLLINEAR=2,GW.NO_INTERSECTION=0,GW.POINT_INTERSECTION=1,GW.COLLINEAR_INTERSECTION=2;class UW extends GW{constructor(){super(),UW.constructor_.apply(this,arguments)}static nearestEndpoint(t,e,r,n){var i=t,o=DW.pointToSegment(t,r,n),a=DW.pointToSegment(e,r,n);return a1e-4&&lY.out.println("Distance = "+i.distance(o))}intersectionWithNormalization(t,e,r,n){var i=new zq(t),o=new zq(e),a=new zq(r),s=new zq(n),l=new zq;this.normalizeToEnvCentre(i,o,a,s,l);var u=this.safeHCoordinateIntersection(i,o,a,s);return u.x+=l.x,u.y+=l.y,u}computeCollinearIntersection(t,e,r,n){var i=qq.intersects(t,e,r),o=qq.intersects(t,e,n),a=qq.intersects(r,n,t),s=qq.intersects(r,n,e);return i&&o?(this._intPt[0]=r,this._intPt[1]=n,GW.COLLINEAR_INTERSECTION):a&&s?(this._intPt[0]=t,this._intPt[1]=e,GW.COLLINEAR_INTERSECTION):i&&a?(this._intPt[0]=r,this._intPt[1]=t,!r.equals(t)||o||s?GW.COLLINEAR_INTERSECTION:GW.POINT_INTERSECTION):i&&s?(this._intPt[0]=r,this._intPt[1]=e,!r.equals(e)||o||a?GW.COLLINEAR_INTERSECTION:GW.POINT_INTERSECTION):o&&a?(this._intPt[0]=n,this._intPt[1]=t,!n.equals(t)||i||s?GW.COLLINEAR_INTERSECTION:GW.POINT_INTERSECTION):o&&s?(this._intPt[0]=n,this._intPt[1]=e,!n.equals(e)||i||a?GW.COLLINEAR_INTERSECTION:GW.POINT_INTERSECTION):GW.NO_INTERSECTION}normalizeToEnvCentre(t,e,r,n,i){var o=t.xe.x?t.x:e.x,l=t.y>e.y?t.y:e.y,u=r.xn.x?r.x:n.x,f=r.y>n.y?r.y:n.y,p=((o>u?o:u)+(sc?a:c)+(l0&&o>0||i<0&&o<0)return GW.NO_INTERSECTION;var a=tW.index(r,n,t),s=tW.index(r,n,e);return a>0&&s>0||a<0&&s<0?GW.NO_INTERSECTION:0===i&&0===o&&0===a&&0===s?this.computeCollinearIntersection(t,e,r,n):(0===i||0===o||0===a||0===s?(this._isProper=!1,t.equals2D(r)||t.equals2D(n)?this._intPt[0]=t:e.equals2D(r)||e.equals2D(n)?this._intPt[0]=e:0===i?this._intPt[0]=new zq(r):0===o?this._intPt[0]=new zq(n):0===a?this._intPt[0]=new zq(t):0===s&&(this._intPt[0]=new zq(e))):(this._isProper=!0,this._intPt[0]=this.intersection(t,e,r,n)),GW.POINT_INTERSECTION)}getClass(){return UW}get interfaces_(){return[]}}UW.constructor_=function(){};class BW{constructor(){BW.constructor_.apply(this,arguments)}static locatePointInRing(){if(arguments[0]instanceof zq&&Cq(arguments[1],Pq)){let i=arguments[1];for(var t=new BW(arguments[0]),e=new zq,r=new zq,n=1;nn&&(r=e.x,n=t.x),this._p.x>=r&&this._p.x<=n&&(this._isPointOnSegment=!0),null}if(t.y>this._p.y&&e.y<=this._p.y||e.y>this._p.y&&t.y<=this._p.y){var i=tW.index(t,e,this._p);if(i===tW.COLLINEAR)return this._isPointOnSegment=!0,null;e.y=this._max)throw new rY;var t=this._parent.getGeometryN(this._index++);return t instanceof NY?(this._subcollectionIterator=new VW(t),this._subcollectionIterator.next()):t}remove(){throw new UnsupportedOperationException(this.getClass().getName())}hasNext(){if(this._atStart)return!0;if(null!==this._subcollectionIterator){if(this._subcollectionIterator.hasNext())return!0;this._subcollectionIterator=null}return!(this._index>=this._max)}getClass(){return VW}get interfaces_(){return[$q]}}VW.constructor_=function(){this._parent=null,this._atStart=null,this._max=null,this._index=null,this._subcollectionIterator=null;let t=arguments[0];this._parent=t,this._atStart=!0,this._index=0,this._max=t.getNumGeometries()};class qW{constructor(){qW.constructor_.apply(this,arguments)}locateInPolygonRing(t,e){return e.getEnvelopeInternal().intersects(t)?zW.locateInRing(t,e.getCoordinates()):AW.EXTERIOR}intersects(t,e){return this.locate(t,e)!==AW.EXTERIOR}updateLocationInfo(t){t===AW.INTERIOR&&(this._isIn=!0),t===AW.BOUNDARY&&this._numBoundaries++}computeLocation(t,e){if(e instanceof HY&&this.updateLocationInfo(this.locateOnPoint(t,e)),e instanceof WY)this.updateLocationInfo(this.locateOnLineString(t,e));else if(e instanceof rW)this.updateLocationInfo(this.locateInPolygon(t,e));else if(e instanceof AY)for(var r=e,n=0;n0||this._isIn?AW.INTERIOR:AW.EXTERIOR)}getClass(){return qW}get interfaces_(){return[]}}qW.constructor_=function(){if(this._boundaryRule=Xq.OGC_SFS_BOUNDARY_RULE,this._isIn=null,this._numBoundaries=null,0===arguments.length);else if(1===arguments.length){let t=arguments[0];if(null===t)throw new Lq("Rule must be non-null");this._boundaryRule=t}};class YW{constructor(){YW.constructor_.apply(this,arguments)}static matches(){if(Number.isInteger(arguments[0])&&"string"==typeof arguments[1]){let t=arguments[0],e=arguments[1];return e===RY.SYM_DONTCARE||(e===RY.SYM_TRUE&&(t>=0||t===RY.TRUE)||(e===RY.SYM_FALSE&&t===RY.FALSE||(e===RY.SYM_P&&t===RY.P||(e===RY.SYM_L&&t===RY.L||e===RY.SYM_A&&t===RY.A))))}if("string"==typeof arguments[0]&&"string"==typeof arguments[1]){let t=arguments[1];return new YW(arguments[0]).matches(t)}}static isTrue(t){return t>=0||t===RY.TRUE}isIntersects(){return!this.isDisjoint()}isCovers(){return(YW.isTrue(this._matrix[AW.INTERIOR][AW.INTERIOR])||YW.isTrue(this._matrix[AW.INTERIOR][AW.BOUNDARY])||YW.isTrue(this._matrix[AW.BOUNDARY][AW.INTERIOR])||YW.isTrue(this._matrix[AW.BOUNDARY][AW.BOUNDARY]))&&this._matrix[AW.EXTERIOR][AW.INTERIOR]===RY.FALSE&&this._matrix[AW.EXTERIOR][AW.BOUNDARY]===RY.FALSE}isCoveredBy(){return(YW.isTrue(this._matrix[AW.INTERIOR][AW.INTERIOR])||YW.isTrue(this._matrix[AW.INTERIOR][AW.BOUNDARY])||YW.isTrue(this._matrix[AW.BOUNDARY][AW.INTERIOR])||YW.isTrue(this._matrix[AW.BOUNDARY][AW.BOUNDARY]))&&this._matrix[AW.INTERIOR][AW.EXTERIOR]===RY.FALSE&&this._matrix[AW.BOUNDARY][AW.EXTERIOR]===RY.FALSE}set(){if(1===arguments.length){let n=arguments[0];for(var t=0;t=0&&e>=0&&this.setAtLeast(t,e,r)}isWithin(){return YW.isTrue(this._matrix[AW.INTERIOR][AW.INTERIOR])&&this._matrix[AW.INTERIOR][AW.EXTERIOR]===RY.FALSE&&this._matrix[AW.BOUNDARY][AW.EXTERIOR]===RY.FALSE}isTouches(t,e){return t>e?this.isTouches(e,t):(t===RY.A&&e===RY.A||t===RY.L&&e===RY.L||t===RY.L&&e===RY.A||t===RY.P&&e===RY.A||t===RY.P&&e===RY.L)&&(this._matrix[AW.INTERIOR][AW.INTERIOR]===RY.FALSE&&(YW.isTrue(this._matrix[AW.INTERIOR][AW.BOUNDARY])||YW.isTrue(this._matrix[AW.BOUNDARY][AW.INTERIOR])||YW.isTrue(this._matrix[AW.BOUNDARY][AW.BOUNDARY])))}isOverlaps(t,e){return t===RY.P&&e===RY.P||t===RY.A&&e===RY.A?YW.isTrue(this._matrix[AW.INTERIOR][AW.INTERIOR])&&YW.isTrue(this._matrix[AW.INTERIOR][AW.EXTERIOR])&&YW.isTrue(this._matrix[AW.EXTERIOR][AW.INTERIOR]):t===RY.L&&e===RY.L&&(1===this._matrix[AW.INTERIOR][AW.INTERIOR]&&YW.isTrue(this._matrix[AW.INTERIOR][AW.EXTERIOR])&&YW.isTrue(this._matrix[AW.EXTERIOR][AW.INTERIOR]))}isEquals(t,e){return t===e&&(YW.isTrue(this._matrix[AW.INTERIOR][AW.INTERIOR])&&this._matrix[AW.INTERIOR][AW.EXTERIOR]===RY.FALSE&&this._matrix[AW.BOUNDARY][AW.EXTERIOR]===RY.FALSE&&this._matrix[AW.EXTERIOR][AW.INTERIOR]===RY.FALSE&&this._matrix[AW.EXTERIOR][AW.BOUNDARY]===RY.FALSE)}toString(){for(var t=new qY("123456789"),e=0;e<3;e++)for(var r=0;r<3;r++)t.setCharAt(3*e+r,RY.toDimensionSymbol(this._matrix[e][r]));return t.toString()}setAll(t){for(var e=0;e<3;e++)for(var r=0;r<3;r++)this._matrix[e][r]=t}get(t,e){return this._matrix[t][e]}transpose(){var t=this._matrix[1][0];return this._matrix[1][0]=this._matrix[0][1],this._matrix[0][1]=t,t=this._matrix[2][0],this._matrix[2][0]=this._matrix[0][2],this._matrix[0][2]=t,t=this._matrix[2][1],this._matrix[2][1]=this._matrix[1][2],this._matrix[1][2]=t,this}matches(t){if(9!==t.length)throw new Lq("Should be length 9: "+t);for(var e=0;e<3;e++)for(var r=0;r<3;r++)if(!YW.matches(this._matrix[e][r],t.charAt(3*e+r)))return!1;return!0}add(t){for(var e=0;e<3;e++)for(var r=0;r<3;r++)this.setAtLeast(e,r,t.get(e,r))}isDisjoint(){return this._matrix[AW.INTERIOR][AW.INTERIOR]===RY.FALSE&&this._matrix[AW.INTERIOR][AW.BOUNDARY]===RY.FALSE&&this._matrix[AW.BOUNDARY][AW.INTERIOR]===RY.FALSE&&this._matrix[AW.BOUNDARY][AW.BOUNDARY]===RY.FALSE}isCrosses(t,e){return t===RY.P&&e===RY.L||t===RY.P&&e===RY.A||t===RY.L&&e===RY.A?YW.isTrue(this._matrix[AW.INTERIOR][AW.INTERIOR])&&YW.isTrue(this._matrix[AW.INTERIOR][AW.EXTERIOR]):t===RY.L&&e===RY.P||t===RY.A&&e===RY.P||t===RY.A&&e===RY.L?YW.isTrue(this._matrix[AW.INTERIOR][AW.INTERIOR])&&YW.isTrue(this._matrix[AW.EXTERIOR][AW.INTERIOR]):t===RY.L&&e===RY.L&&0===this._matrix[AW.INTERIOR][AW.INTERIOR]}getClass(){return YW}get interfaces_(){return[Tq]}}YW.constructor_=function(){if(this._matrix=null,0===arguments.length)this._matrix=Array(3).fill().map(()=>Array(3)),this.setAll(RY.FALSE);else if(1===arguments.length)if("string"==typeof arguments[0]){let t=arguments[0];YW.constructor_.call(this),this.set(t)}else if(arguments[0]instanceof YW){let t=arguments[0];YW.constructor_.call(this),this._matrix[AW.INTERIOR][AW.INTERIOR]=t._matrix[AW.INTERIOR][AW.INTERIOR],this._matrix[AW.INTERIOR][AW.BOUNDARY]=t._matrix[AW.INTERIOR][AW.BOUNDARY],this._matrix[AW.INTERIOR][AW.EXTERIOR]=t._matrix[AW.INTERIOR][AW.EXTERIOR],this._matrix[AW.BOUNDARY][AW.INTERIOR]=t._matrix[AW.BOUNDARY][AW.INTERIOR],this._matrix[AW.BOUNDARY][AW.BOUNDARY]=t._matrix[AW.BOUNDARY][AW.BOUNDARY],this._matrix[AW.BOUNDARY][AW.EXTERIOR]=t._matrix[AW.BOUNDARY][AW.EXTERIOR],this._matrix[AW.EXTERIOR][AW.INTERIOR]=t._matrix[AW.EXTERIOR][AW.INTERIOR],this._matrix[AW.EXTERIOR][AW.BOUNDARY]=t._matrix[AW.EXTERIOR][AW.BOUNDARY],this._matrix[AW.EXTERIOR][AW.EXTERIOR]=t._matrix[AW.EXTERIOR][AW.EXTERIOR]}};class WW{constructor(){WW.constructor_.apply(this,arguments)}static isNorthern(t){return t===WW.NE||t===WW.NW}static isOpposite(t,e){return t!==e&&2===(t-e+4)%4}static commonHalfPlane(t,e){if(t===e)return t;if(2===(t-e+4)%4)return-1;var r=te?t:e)?3:r}static isInHalfPlane(t,e){return e===WW.SE?t===WW.SE||t===WW.SW:t===e||t===e+1}static quadrant(){if("number"==typeof arguments[0]&&"number"==typeof arguments[1]){let t=arguments[0],e=arguments[1];if(0===t&&0===e)throw new Lq("Cannot compute the quadrant for point ( "+t+", "+e+" )");return t>=0?e>=0?WW.NE:WW.SE:e>=0?WW.NW:WW.SW}if(arguments[0]instanceof zq&&arguments[1]instanceof zq){let t=arguments[0],e=arguments[1];if(e.x===t.x&&e.y===t.y)throw new Lq("Cannot compute the quadrant for two identical points "+t);return e.x>=t.x?e.y>=t.y?WW.NE:WW.SE:e.y>=t.y?WW.NW:WW.SW}}getClass(){return WW}get interfaces_(){return[]}}WW.constructor_=function(){},WW.NE=0,WW.NW=1,WW.SW=2,WW.SE=3;class XW{constructor(){XW.constructor_.apply(this,arguments)}compareDirection(t){return this._dx===t._dx&&this._dy===t._dy?0:this._quadrant>t._quadrant?1:this._quadrantthis.location.length){var e=new Array(3).fill(null);e[HW.ON]=this.location[HW.ON],e[HW.LEFT]=AW.NONE,e[HW.RIGHT]=AW.NONE,this.location=e}for(var r=0;r1&&t.append(AW.toLocationSymbol(this.location[HW.LEFT])),t.append(AW.toLocationSymbol(this.location[HW.ON])),this.location.length>1&&t.append(AW.toLocationSymbol(this.location[HW.RIGHT])),t.toString()}setLocations(t,e,r){this.location[HW.ON]=t,this.location[HW.LEFT]=e,this.location[HW.RIGHT]=r}get(t){return t1}isAnyNull(){for(var t=0;t=t.getNumPoints()&&null===n)return null;var o=t.getCoordinate(i);null!==n&&n.segmentIndex===r.segmentIndex&&(o=n.coord);var a=new XW(t,r.coord,o,new KW(t.getLabel()));e.add(a)}createEdgeEndForPrev(t,e,r,n){var i=r.segmentIndex;if(0===r.dist){if(0===i)return null;i--}var o=t.getCoordinate(i);null!==n&&n.segmentIndex>=i&&(o=n.coord);var a=new KW(t.getLabel());a.flip();var s=new XW(t,r.coord,o,a);e.add(s)}computeEdgeEnds(){if(1===arguments.length){let n=arguments[0];for(var t=new iY,e=n;e.hasNext();){var r=e.next();this.computeEdgeEnds(r,t)}return t}if(2===arguments.length){let t=arguments[0],e=arguments[1];var n=t.getEdgeIntersectionList();n.addEndpoints();var i=n.iterator(),o=null,a=null;if(!i.hasNext())return null;var s=i.next();do{o=a,a=s,s=null,i.hasNext()&&(s=i.next()),null!==a&&(this.createEdgeEndForPrev(t,e,a,o),this.createEdgeEndForNext(t,e,a,s))}while(null!==a)}}getClass(){return JW}get interfaces_(){return[]}}JW.constructor_=function(){};class $W{constructor(){$W.constructor_.apply(this,arguments)}setVisited(t){this._isVisited=t}setInResult(t){this._isInResult=t}isCovered(){return this._isCovered}isCoveredSet(){return this._isCoveredSet}setLabel(t){this._label=t}getLabel(){return this._label}setCovered(t){this._isCovered=t,this._isCoveredSet=!0}updateIM(t){Bq.isTrue(this._label.getGeometryCount()>=2,"found partial label"),this.computeIM(t)}isInResult(){return this._isInResult}isVisited(){return this._isVisited}getClass(){return $W}get interfaces_(){return[]}}$W.constructor_=function(){if(this._label=null,this._isInResult=!1,this._isCovered=!1,this._isCoveredSet=!1,this._isVisited=!1,0===arguments.length);else if(1===arguments.length){let t=arguments[0];this._label=t}};class QW extends $W{constructor(){super(),QW.constructor_.apply(this,arguments)}isIncidentEdgeInResult(){for(var t=this.getEdges().getEdges().iterator();t.hasNext();){if(t.next().getEdge().isInResult())return!0}return!1}isIsolated(){return 1===this._label.getGeometryCount()}getCoordinate(){return this._coord}print(t){t.println("node "+this._coord+" lbl: "+this._label)}computeIM(t){}computeMergedLocation(t,e){var r=AW.NONE;if(r=this._label.getLocation(e),!t.isNull(e)){var n=t.getLocation(e);r!==AW.BOUNDARY&&(r=n)}return r}setLabel(){if(2!==arguments.length||!Number.isInteger(arguments[1])||!Number.isInteger(arguments[0]))return super.setLabel.apply(this,arguments);{let t=arguments[0],e=arguments[1];null===this._label?this._label=new KW(t,e):this._label.setLocation(t,e)}}getEdges(){return this._edges}mergeLabel(){if(arguments[0]instanceof QW){let t=arguments[0];this.mergeLabel(t._label)}else if(arguments[0]instanceof KW){let r=arguments[0];for(var t=0;t<2;t++){var e=this.computeMergedLocation(r,t);this._label.getLocation(t)===AW.NONE&&this._label.setLocation(t,e)}}}add(t){this._edges.insert(t),t.setNode(this)}setLabelBoundary(t){if(null===this._label)return null;var e=AW.NONE;null!==this._label&&(e=this._label.getLocation(t));var r=null;switch(e){case AW.BOUNDARY:r=AW.INTERIOR;break;case AW.INTERIOR:default:r=AW.BOUNDARY}this._label.setLocation(t,r)}getClass(){return QW}get interfaces_(){return[]}}QW.constructor_=function(){this._coord=null,this._edges=null;let t=arguments[0],e=arguments[1];this._coord=t,this._edges=e,this._label=new KW(0,AW.NONE)};class tX{constructor(){tX.constructor_.apply(this,arguments)}find(t){return this.nodeMap.get(t)}addNode(){if(arguments[0]instanceof zq){let e=arguments[0];return null===(t=this.nodeMap.get(e))&&(t=this.nodeFact.createNode(e),this.nodeMap.put(e,t)),t}if(arguments[0]instanceof QW){let e=arguments[0];var t;return null===(t=this.nodeMap.get(e.getCoordinate()))?(this.nodeMap.put(e.getCoordinate(),e),e):(t.mergeLabel(e),t)}}print(t){for(var e=this.iterator();e.hasNext();){e.next().print(t)}}iterator(){return this.nodeMap.values().iterator()}values(){return this.nodeMap.values()}getBoundaryNodes(t){for(var e=new iY,r=this.iterator();r.hasNext();){var n=r.next();n.getLabel().getLocation(t)===AW.BOUNDARY&&e.add(n)}return e}add(t){var e=t.getCoordinate();this.addNode(e).add(t)}getClass(){return tX}get interfaces_(){return[]}}tX.constructor_=function(){this.nodeMap=new wY,this.nodeFact=null;let t=arguments[0];this.nodeFact=t};class eX extends Gq{constructor(){if(1===arguments.length){let t=arguments[0];super(t),Gq.call(this,t)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];super(eX.msgWithCoord(t,e)),this.name="TopologyException",this.pt=new zq(e)}}getCoordinate(){return this.pt}get interfaces_(){return[]}getClass(){return eX}static msgWithCoord(t,e){return null!==e?t+" [ "+e+" ]":t}}class rX{constructor(){rX.constructor_.apply(this,arguments)}locate(t){}getClass(){return rX}get interfaces_(){return[]}}rX.constructor_=function(){};class nX{constructor(){nX.constructor_.apply(this,arguments)}static locatePointInPolygon(t,e){if(e.isEmpty())return AW.EXTERIOR;var r=e.getExteriorRing(),n=nX.locatePointInRing(t,r);if(n!==AW.INTERIOR)return n;for(var i=0;ie._xValue?1:this._eventTypee._eventType?1:0}getInsertEvent(){return this._insertEvent}isInsert(){return this._eventType===aX.INSERT}isSameLabel(t){return null!==this._label&&this._label===t._label}getDeleteEventIndex(){return this._deleteEventIndex}getClass(){return aX}get interfaces_(){return[Nq]}}aX.constructor_=function(){if(this._label=null,this._xValue=null,this._eventType=null,this._insertEvent=null,this._deleteEventIndex=null,this._obj=null,2===arguments.length){let t=arguments[0],e=arguments[1];this._eventType=aX.DELETE,this._xValue=t,this._insertEvent=e}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];this._eventType=aX.INSERT,this._label=t,this._xValue=e,this._obj=r}},aX.INSERT=1,aX.DELETE=2;class sX{constructor(){sX.constructor_.apply(this,arguments)}getClass(){return sX}get interfaces_(){return[]}}sX.constructor_=function(){};const lX={reverseOrder:function(){return{compare:(t,e)=>e.compareTo(t)}},min:function(t){return lX.sort(t),t.get(0)},sort:function(t,e){const r=t.toArray();e?TY.sort(r,e):TY.sort(r);const n=t.iterator();for(let t=0,e=r.length;te||this._maxo?1:0}getClass(){return dX}get interfaces_(){return[Dq]}}dX.constructor_=function(){},pX.NodeComparator=dX,pX.constructor_=function(){this._min=Fq.POSITIVE_INFINITY,this._max=Fq.NEGATIVE_INFINITY};class gX extends pX{constructor(){super(),gX.constructor_.apply(this,arguments)}query(t,e,r){if(!this.intersects(t,e))return null;r.visitItem(this._item)}getClass(){return gX}get interfaces_(){return[]}}gX.constructor_=function(){this._item=null;let t=arguments[0],e=arguments[1],r=arguments[2];this._min=t,this._max=e,this._item=r};class yX extends pX{constructor(){super(),yX.constructor_.apply(this,arguments)}buildExtent(t,e){this._min=Math.min(t._min,e._min),this._max=Math.max(t._max,e._max)}query(t,e,r){if(!this.intersects(t,e))return null;null!==this._node1&&this._node1.query(t,e,r),null!==this._node2&&this._node2.query(t,e,r)}getClass(){return yX}get interfaces_(){return[]}}yX.constructor_=function(){this._node1=null,this._node2=null;let t=arguments[0],e=arguments[1];this._node1=t,this._node2=e,this.buildExtent(this._node1,this._node2)};class mX{constructor(){mX.constructor_.apply(this,arguments)}buildTree(){uX.sort(this._leaves,new pX.NodeComparator);for(var t=this._leaves,e=null,r=new iY;;){if(this.buildLevel(t,r),1===r.size())return r.get(0);e=t,t=r,r=e}}insert(t,e,r){if(null!==this._root)throw new IllegalStateException("Index cannot be added to once it has been queried");this._leaves.add(new gX(t,e,r))}query(t,e,r){this.init(),this._root.query(t,e,r)}buildRoot(){if(null!==this._root)return null;this._root=this.buildTree()}printNode(t){lY.out.println(NW.toLineString(new zq(t._min,this._level),new zq(t._max,this._level)))}init(){if(null!==this._root)return null;this.buildRoot()}buildLevel(t,e){this._level++,e.clear();for(var r=0;r=0&&e>=0||t<=0&&e<=0?Math.max(t,e):0}if(arguments[0]instanceof zq){let t=arguments[0];return tW.index(this.p0,this.p1,t)}}toGeometry(t){return t.createLineString([this.p0,this.p1])}isVertical(){return this.p0.x===this.p1.x}equals(t){if(!(t instanceof _X))return!1;var e=t;return this.p0.equals(e.p0)&&this.p1.equals(e.p1)}intersection(t){var e=new UW;return e.computeIntersection(this.p0,this.p1,t.p0,t.p1),e.hasIntersection()?e.getIntersection(0):null}project(){if(arguments[0]instanceof zq){let r=arguments[0];if(r.equals(this.p0)||r.equals(this.p1))return new zq(r);var t=this.projectionFactor(r),e=new zq;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e}if(arguments[0]instanceof _X){let t=arguments[0];var r=this.projectionFactor(t.p0),n=this.projectionFactor(t.p1);if(r>=1&&n>=1)return null;if(r<=0&&n<=0)return null;var i=this.project(t.p0);r<0&&(i=this.p0),r>1&&(i=this.p1);var o=this.project(t.p1);return n<0&&(o=this.p0),n>1&&(o=this.p1),new _X(i,o)}}normalize(){this.p1.compareTo(this.p0)<0&&this.reverse()}angle(){return Math.atan2(this.p1.y-this.p0.y,this.p1.x-this.p0.x)}getCoordinate(t){return 0===t?this.p0:this.p1}distancePerpendicular(t){return DW.pointToLinePerpendicular(t,this.p0,this.p1)}minY(){return Math.min(this.p0.y,this.p1.y)}midPoint(){return _X.midPoint(this.p0,this.p1)}projectionFactor(t){if(t.equals(this.p0))return 0;if(t.equals(this.p1))return 1;var e=this.p1.x-this.p0.x,r=this.p1.y-this.p0.y,n=e*e+r*r;return n<=0?Fq.NaN:((t.x-this.p0.x)*e+(t.y-this.p0.y)*r)/n}closestPoints(t){var e=this.intersection(t);if(null!==e)return[e,e];var r=new Array(2).fill(null),n=Fq.MAX_VALUE,i=null,o=this.closestPoint(t.p0);n=o.distance(t.p0),r[0]=o,r[1]=t.p0;var a=this.closestPoint(t.p1);(i=a.distance(t.p1))0&&e<1?this.project(t):this.p0.distance(t)1||Fq.isNaN(e))&&(e=1),e}toString(){return"LINESTRING( "+this.p0.x+" "+this.p0.y+", "+this.p1.x+" "+this.p1.y+")"}isHorizontal(){return this.p0.y===this.p1.y}distance(){if(arguments[0]instanceof _X){let t=arguments[0];return DW.segmentToSegment(this.p0,this.p1,t.p0,t.p1)}if(arguments[0]instanceof zq){let t=arguments[0];return DW.pointToSegment(t,this.p0,this.p1)}}pointAlong(t){var e=new zq;return e.x=this.p0.x+t*(this.p1.x-this.p0.x),e.y=this.p0.y+t*(this.p1.y-this.p0.y),e}hashCode(){var t=java.lang.Double.doubleToLongBits(this.p0.x);t^=31*java.lang.Double.doubleToLongBits(this.p0.y);var e=Math.trunc(t)^Math.trunc(t>>32),r=java.lang.Double.doubleToLongBits(this.p1.x);return r^=31*java.lang.Double.doubleToLongBits(this.p1.y),e^(Math.trunc(r)^Math.trunc(r>>32))}getClass(){return _X}get interfaces_(){return[Nq,Aq]}}_X.constructor_=function(){if(this.p0=null,this.p1=null,0===arguments.length)_X.constructor_.call(this,new zq,new zq);else if(1===arguments.length){let t=arguments[0];_X.constructor_.call(this,t.p0,t.p1)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this.p0=t,this.p1=e}else if(4===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2],n=arguments[3];_X.constructor_.call(this,new zq(t,e),new zq(r,n))}},_X.serialVersionUID=0x2d2172135f411c00;class vX{constructor(){vX.constructor_.apply(this,arguments)}static getGeometry(){if(1===arguments.length){let t=arguments[0];return t.getFactory().buildGeometry(vX.getLines(t))}if(2===arguments.length){let t=arguments[0],e=arguments[1];return t.getFactory().buildGeometry(vX.getLines(t,e))}}static getLines(){if(1===arguments.length){let t=arguments[0];return vX.getLines(t,!1)}if(2===arguments.length){if(Cq(arguments[0],Qq)&&Cq(arguments[1],Qq)){let r=arguments[1];for(var t=arguments[0].iterator();t.hasNext();){var e=t.next();vX.getLines(e,r)}return r}if(arguments[0]instanceof Yq&&"boolean"==typeof arguments[1]){let t=arguments[0],e=arguments[1];var r=new iY;return t.apply(new vX(r,e)),r}if(arguments[0]instanceof Yq&&Cq(arguments[1],Qq)){let t=arguments[0],e=arguments[1];return t instanceof WY?e.add(t):t.apply(new vX(e)),e}}else if(3===arguments.length){if("boolean"==typeof arguments[2]&&Cq(arguments[0],Qq)&&Cq(arguments[1],Qq)){let r=arguments[1],n=arguments[2];for(t=arguments[0].iterator();t.hasNext();){e=t.next();vX.getLines(e,r,n)}return r}if("boolean"==typeof arguments[2]&&arguments[0]instanceof Yq&&Cq(arguments[1],Qq)){let t=arguments[1],e=arguments[2];return arguments[0].apply(new vX(t,e)),t}}}filter(t){if(this._isForcedToLineString&&t instanceof iW){var e=t.getFactory().createLineString(t.getCoordinateSequence());return this._lines.add(e),null}t instanceof WY&&this._lines.add(t)}setForceToLineString(t){this._isForcedToLineString=t}getClass(){return vX}get interfaces_(){return[Mq]}}vX.constructor_=function(){if(this._lines=null,this._isForcedToLineString=!1,1===arguments.length){let t=arguments[0];this._lines=t}else if(2===arguments.length){let t=arguments[0],e=arguments[1];this._lines=t,this._isForcedToLineString=e}};class bX{constructor(){bX.constructor_.apply(this,arguments)}visitItem(t){this._items.add(t)}getItems(){return this._items}getClass(){return bX}get interfaces_(){return[fX]}}bX.constructor_=function(){this._items=new iY};class xX{constructor(){xX.constructor_.apply(this,arguments)}locate(t){var e=new BW(t),r=new wX(e);return this._index.query(t.y,t.y,r),e.getLocation()}getClass(){return xX}get interfaces_(){return[rX]}}class wX{constructor(){wX.constructor_.apply(this,arguments)}visitItem(t){var e=t;this._counter.countSegment(e.getCoordinate(0),e.getCoordinate(1))}getClass(){return wX}get interfaces_(){return[fX]}}wX.constructor_=function(){this._counter=null;let t=arguments[0];this._counter=t};class EX{constructor(){EX.constructor_.apply(this,arguments)}init(t){for(var e=vX.getLines(t).iterator();e.hasNext();){var r=e.next().getCoordinates();this.addLine(r)}}addLine(t){for(var e=1;e0||!e.coord.equals2D(n);i||r--;var o=new Array(r).fill(null),a=0;o[a++]=new zq(t.coord);for(var s=t.segmentIndex+1;s<=e.segmentIndex;s++)o[a++]=this.edge.pts[s];return i&&(o[a]=e.coord),new PX(o,new KW(this.edge._label))}add(t,e,r){var n=new OX(t,e,r),i=this._nodeMap.get(n);return null!==i?i:(this._nodeMap.put(n,n),n)}isIntersection(t){for(var e=this.iterator();e.hasNext();){if(e.next().coord.equals(t))return!0}return!1}getClass(){return SX}get interfaces_(){return[]}}SX.constructor_=function(){this._nodeMap=new wY,this.edge=null;let t=arguments[0];this.edge=t};class IX{constructor(){IX.constructor_.apply(this,arguments)}static toIntArray(t){for(var e=new Array(t.size()).fill(null),r=0;rr?e:r}getMinX(t){var e=this.pts[this.startIndex[t]].x,r=this.pts[this.startIndex[t+1]].x;return ee&&(n=1),this._depth[t][r]=n}}}getDelta(t){return this._depth[t][HW.RIGHT]-this._depth[t][HW.LEFT]}getLocation(t,e){return this._depth[t][e]<=0?AW.EXTERIOR:AW.INTERIOR}toString(){return"A: "+this._depth[0][1]+","+this._depth[0][2]+" B: "+this._depth[1][1]+","+this._depth[1][2]}add(){if(1===arguments.length){let n=arguments[0];for(var t=0;t<2;t++)for(var e=1;e<3;e++){var r=n.getLocation(t,e);r!==AW.EXTERIOR&&r!==AW.INTERIOR||(this.isNull(t,e)?this._depth[t][e]=TX.depthAtLocation(r):this._depth[t][e]+=TX.depthAtLocation(r))}}else if(3===arguments.length){let t=arguments[0],e=arguments[1];arguments[2]===AW.INTERIOR&&this._depth[t][e]++}}getClass(){return TX}get interfaces_(){return[]}}TX.constructor_=function(){this._depth=Array(2).fill().map(()=>Array(3));for(var t=0;t<2;t++)for(var e=0;e<3;e++)this._depth[t][e]=TX.NULL_VALUE},TX.NULL_VALUE=-1;class PX extends $W{constructor(){super(),PX.constructor_.apply(this,arguments)}static updateIM(){if(!(2===arguments.length&&arguments[1]instanceof YW&&arguments[0]instanceof KW))return super.updateIM.apply(this,arguments);{let t=arguments[0],e=arguments[1];e.setAtLeastIfValid(t.getLocation(0,HW.ON),t.getLocation(1,HW.ON),1),t.isArea()&&(e.setAtLeastIfValid(t.getLocation(0,HW.LEFT),t.getLocation(1,HW.LEFT),2),e.setAtLeastIfValid(t.getLocation(0,HW.RIGHT),t.getLocation(1,HW.RIGHT),2))}}getDepth(){return this._depth}getCollapsedEdge(){var t=new Array(2).fill(null);return t[0]=this.pts[0],t[1]=this.pts[1],new PX(t,KW.toLineLabel(this._label))}isIsolated(){return this._isIsolated}getCoordinates(){return this.pts}setIsolated(t){this._isIsolated=t}setName(t){this._name=t}equals(t){if(!(t instanceof PX))return!1;var e=t;if(this.pts.length!==e.pts.length)return!1;for(var r=!0,n=!0,i=this.pts.length,o=0;o0?this.pts[0]:null;if(1===arguments.length){let t=arguments[0];return this.pts[t]}}print(t){t.print("edge "+this._name+": "),t.print("LINESTRING (");for(var e=0;e0&&t.print(","),t.print(this.pts[e].x+" "+this.pts[e].y);t.print(") "+this._label+" "+this._depthDelta)}computeIM(t){PX.updateIM(this._label,t)}isCollapsed(){return!!this._label.isArea()&&(3===this.pts.length&&!!this.pts[0].equals(this.pts[2]))}isClosed(){return this.pts[0].equals(this.pts[this.pts.length-1])}getMaximumSegmentIndex(){return this.pts.length-1}getDepthDelta(){return this._depthDelta}getNumPoints(){return this.pts.length}printReverse(t){t.print("edge "+this._name+": ");for(var e=this.pts.length-1;e>=0;e--)t.print(this.pts[e]+" ");t.println("")}getMonotoneChainEdge(){return null===this._mce&&(this._mce=new CX(this)),this._mce}getEnvelope(){if(null===this._env){this._env=new qq;for(var t=0;t0&&t.append(","),t.append(this.pts[e].x+" "+this.pts[e].y);return t.append(") "+this._label+" "+this._depthDelta),t.toString()}isPointwiseEqual(t){if(this.pts.length!==t.pts.length)return!1;for(var e=0;e=2,"found LineString with single point"),this.insertBoundaryPoint(this._argIndex,e[0]),this.insertBoundaryPoint(this._argIndex,e[e.length-1])}getInvalidPoint(){return this._invalidPoint}getBoundaryPoints(){for(var t=this.getBoundaryNodes(),e=new Array(t.size()).fill(null),r=0,n=t.iterator();n.hasNext();){var i=n.next();e[r++]=i.getCoordinate().copy()}return e}getBoundaryNodes(){return null===this._boundaryNodes&&(this._boundaryNodes=this._nodes.getBoundaryNodes(this._argIndex)),this._boundaryNodes}addSelfIntersectionNode(t,e,r){if(this.isBoundaryNode(t,e))return null;r===AW.BOUNDARY&&this._useBoundaryDeterminationRule?this.insertBoundaryPoint(t,e):this.insertPoint(t,e,r)}addPolygonRing(t,e,r){if(t.isEmpty())return null;var n=uY.removeRepeatedPoints(t.getCoordinates());if(n.length<4)return this._hasTooFewPoints=!0,this._invalidPoint=n[0],null;var i=e,o=r;tW.isCCW(n)&&(i=r,o=e);var a=new PX(n,new KW(this._argIndex,AW.BOUNDARY,i,o));this._lineEdgeMap.put(t,a),this.insertEdge(a),this.insertPoint(this._argIndex,n[0],AW.BOUNDARY)}insertPoint(t,e,r){var n=this._nodes.addNode(e),i=n.getLabel();null===i?n._label=new KW(t,r):i.setLocation(t,r)}createEdgeSetIntersector(){return new hX}addSelfIntersectionNodes(t){for(var e=this._edges.iterator();e.hasNext();)for(var r=e.next(),n=r.getLabel().getLocation(t),i=r.eiList.iterator();i.hasNext();){var o=i.next();this.addSelfIntersectionNode(t,o.coord,n)}}add(){if(!(1===arguments.length&&arguments[0]instanceof Yq))return super.add.apply(this,arguments);{let t=arguments[0];if(t.isEmpty())return null;if(t instanceof oW&&(this._useBoundaryDeterminationRule=!1),t instanceof rW)this.addPolygon(t);else if(t instanceof WY)this.addLineString(t);else if(t instanceof HY)this.addPoint(t);else if(t instanceof nW)this.addCollection(t);else if(t instanceof AY)this.addCollection(t);else if(t instanceof oW)this.addCollection(t);else{if(!(t instanceof NY))throw new UnsupportedOperationException(t.getClass().getName());this.addCollection(t)}}}addCollection(t){for(var e=0;e50?(null===this._areaPtLocator&&(this._areaPtLocator=new xX(this._parentGeom)),this._areaPtLocator.locate(t)):this._ptLocator.locate(t,this._parentGeom)}findEdge(){if(1===arguments.length&&arguments[0]instanceof WY){let t=arguments[0];return this._lineEdgeMap.get(t)}return super.findEdge.apply(this,arguments)}getClass(){return NX}get interfaces_(){return[]}}NX.constructor_=function(){if(this._parentGeom=null,this._lineEdgeMap=new bW,this._boundaryNodeRule=null,this._useBoundaryDeterminationRule=!0,this._argIndex=null,this._boundaryNodes=null,this._hasTooFewPoints=!1,this._invalidPoint=null,this._areaPtLocator=null,this._ptLocator=new qW,2===arguments.length){let t=arguments[0],e=arguments[1];NX.constructor_.call(this,t,e,Xq.OGC_SFS_BOUNDARY_RULE)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];this._argIndex=t,this._parentGeom=e,this._boundaryNodeRule=r,null!==e&&this.add(e)}};class AX extends XW{constructor(){super(),AX.constructor_.apply(this,arguments)}insert(t){this._edgeEnds.add(t)}print(t){t.println("EdgeEndBundle--\x3e Label: "+this._label);for(var e=this.iterator();e.hasNext();){e.next().print(t),t.println()}}iterator(){return this._edgeEnds.iterator()}getEdgeEnds(){return this._edgeEnds}computeLabelOn(t,e){for(var r=0,n=!1,i=this.iterator();i.hasNext();){(o=i.next().getLabel().getLocation(t))===AW.BOUNDARY&&r++,o===AW.INTERIOR&&(n=!0)}var o=AW.NONE;n&&(o=AW.INTERIOR),r>0&&(o=NX.determineBoundary(e,r)),this._label.setLocation(t,o)}computeLabelSide(t,e){for(var r=this.iterator();r.hasNext();){var n=r.next();if(n.getLabel().isArea()){var i=n.getLabel().getLocation(t,e);if(i===AW.INTERIOR)return this._label.setLocation(t,e,AW.INTERIOR),null;i===AW.EXTERIOR&&this._label.setLocation(t,e,AW.EXTERIOR)}}}getLabel(){return this._label}computeLabelSides(t){this.computeLabelSide(t,HW.LEFT),this.computeLabelSide(t,HW.RIGHT)}updateIM(t){PX.updateIM(this._label,t)}computeLabel(t){for(var e=!1,r=this.iterator();r.hasNext();){r.next().getLabel().isArea()&&(e=!0)}this._label=e?new KW(AW.NONE,AW.NONE,AW.NONE):new KW(AW.NONE);for(var n=0;n<2;n++)this.computeLabelOn(n,t),e&&this.computeLabelSides(n)}getClass(){return AX}get interfaces_(){return[]}}AX.constructor_=function(){if(this._edgeEnds=new iY,1===arguments.length){let t=arguments[0];AX.constructor_.call(this,null,t)}else if(2===arguments.length){let t=arguments[1];XW.constructor_.call(this,t.getEdge(),t.getCoordinate(),t.getDirectedCoordinate(),new KW(t.getLabel())),this.insert(t)}};class kX extends iX{constructor(){super(),kX.constructor_.apply(this,arguments)}updateIM(t){for(var e=this.iterator();e.hasNext();){e.next().updateIM(t)}}insert(t){var e=this._edgeMap.get(t);null===e?(e=new AX(t),this.insertEdgeEnd(t,e)):e.insert(t)}getClass(){return kX}get interfaces_(){return[]}}kX.constructor_=function(){};class jX extends QW{constructor(){super(),jX.constructor_.apply(this,arguments)}updateIMFromEdges(t){this._edges.updateIM(t)}computeIM(t){t.setAtLeastIfValid(this._label.getLocation(0),this._label.getLocation(1),0)}getClass(){return jX}get interfaces_(){return[]}}jX.constructor_=function(){let t=arguments[0],e=arguments[1];QW.constructor_.call(this,t,e)};class FX extends LX{constructor(){super(),FX.constructor_.apply(this,arguments)}createNode(t){return new jX(t,new kX)}getClass(){return FX}get interfaces_(){return[]}}FX.constructor_=function(){};class DX{constructor(){DX.constructor_.apply(this,arguments)}insertEdgeEnds(t){for(var e=t.iterator();e.hasNext();){var r=e.next();this._nodes.add(r)}}computeProperIntersectionIM(t,e){var r=this._arg[0].getGeometry().getDimension(),n=this._arg[1].getGeometry().getDimension(),i=t.hasProperIntersection(),o=t.hasProperInteriorIntersection();2===r&&2===n?i&&e.setAtLeast("212101212"):2===r&&1===n?(i&&e.setAtLeast("FFF0FFFF2"),o&&e.setAtLeast("1FFFFF1FF")):1===r&&2===n?(i&&e.setAtLeast("F0FFFFFF2"),o&&e.setAtLeast("1F1FFFFFF")):1===r&&1===n&&o&&e.setAtLeast("0FFFFFFFF")}labelIsolatedEdges(t,e){for(var r=this._arg[t].getEdgeIterator();r.hasNext();){var n=r.next();n.isIsolated()&&(this.labelIsolatedEdge(n,e,this._arg[e].getGeometry()),this._isolatedEdges.add(n))}}labelIsolatedEdge(t,e,r){if(r.getDimension()>0){var n=this._ptLocator.locate(t.getCoordinate(),r);t.getLabel().setAllLocations(e,n)}else t.getLabel().setAllLocations(e,AW.EXTERIOR)}computeIM(){var t=new YW;if(t.set(AW.EXTERIOR,AW.EXTERIOR,2),!this._arg[0].getGeometry().getEnvelopeInternal().intersects(this._arg[1].getGeometry().getEnvelopeInternal()))return this.computeDisjointIM(t),t;this._arg[0].computeSelfNodes(this._li,!1),this._arg[1].computeSelfNodes(this._li,!1);var e=this._arg[0].computeEdgeIntersections(this._arg[1],this._li,!1);this.computeIntersectionNodes(0),this.computeIntersectionNodes(1),this.copyNodesAndLabels(0),this.copyNodesAndLabels(1),this.labelIsolatedNodes(),this.computeProperIntersectionIM(e,t);var r=new JW,n=r.computeEdgeEnds(this._arg[0].getEdgeIterator());this.insertEdgeEnds(n);var i=r.computeEdgeEnds(this._arg[1].getEdgeIterator());return this.insertEdgeEnds(i),this.labelNodeEdges(),this.labelIsolatedEdges(0,1),this.labelIsolatedEdges(1,0),this.updateIM(t),t}labelNodeEdges(){for(var t=this._nodes.iterator();t.hasNext();){t.next().getEdges().computeLabelling(this._arg)}}copyNodesAndLabels(t){for(var e=this._arg[t].getNodeIterator();e.hasNext();){var r=e.next();this._nodes.addNode(r.getCoordinate()).setLabel(t,r.getLabel().getLocation(t))}}labelIntersectionNodes(t){for(var e=this._arg[t].getEdgeIterator();e.hasNext();)for(var r=e.next(),n=r.getLabel().getLocation(t),i=r.getEdgeIntersectionList().iterator();i.hasNext();){var o=i.next(),a=this._nodes.find(o.coord);a.getLabel().isNull(t)&&(n===AW.BOUNDARY?a.setLabelBoundary(t):a.setLabel(t,AW.INTERIOR))}}labelIsolatedNode(t,e){var r=this._ptLocator.locate(t.getCoordinate(),this._arg[e].getGeometry());t.getLabel().setAllLocations(e,r)}computeIntersectionNodes(t){for(var e=this._arg[t].getEdgeIterator();e.hasNext();)for(var r=e.next(),n=r.getLabel().getLocation(t),i=r.getEdgeIntersectionList().iterator();i.hasNext();){var o=i.next(),a=this._nodes.addNode(o.coord);n===AW.BOUNDARY?a.setLabelBoundary(t):a.getLabel().isNull(t)&&a.setLabel(t,AW.INTERIOR)}}labelIsolatedNodes(){for(var t=this._nodes.iterator();t.hasNext();){var e=t.next(),r=e.getLabel();Bq.isTrue(r.getGeometryCount()>0,"node with empty label found"),e.isIsolated()&&(r.isNull(0)?this.labelIsolatedNode(e,0):this.labelIsolatedNode(e,1))}}updateIM(t){for(var e=this._isolatedEdges.iterator();e.hasNext();){e.next().updateIM(t)}for(var r=this._nodes.iterator();r.hasNext();){var n=r.next();n.updateIM(t),n.updateIMFromEdges(t)}}computeDisjointIM(t){var e=this._arg[0].getGeometry();e.isEmpty()||(t.set(AW.INTERIOR,AW.EXTERIOR,e.getDimension()),t.set(AW.BOUNDARY,AW.EXTERIOR,e.getBoundaryDimension()));var r=this._arg[1].getGeometry();r.isEmpty()||(t.set(AW.EXTERIOR,AW.INTERIOR,r.getDimension()),t.set(AW.EXTERIOR,AW.BOUNDARY,r.getBoundaryDimension()))}getClass(){return DX}get interfaces_(){return[]}}DX.constructor_=function(){this._li=new UW,this._ptLocator=new qW,this._arg=null,this._nodes=new tX(new FX),this._im=null,this._isolatedEdges=new iY,this._invalidPoint=null;let t=arguments[0];this._arg=t};class GX{constructor(){GX.constructor_.apply(this,arguments)}getArgGeometry(t){return this._arg[t].getGeometry()}setComputationPrecision(t){this._resultPrecisionModel=t,this._li.setPrecisionModel(this._resultPrecisionModel)}getClass(){return GX}get interfaces_(){return[]}}GX.constructor_=function(){if(this._li=new UW,this._resultPrecisionModel=null,this._arg=null,1===arguments.length){let t=arguments[0];this.setComputationPrecision(t.getPrecisionModel()),this._arg=new Array(1).fill(null),this._arg[0]=new NX(0,t)}else if(2===arguments.length){let t=arguments[0],e=arguments[1];GX.constructor_.call(this,t,e,Xq.OGC_SFS_BOUNDARY_RULE)}else if(3===arguments.length){let t=arguments[0],e=arguments[1],r=arguments[2];t.getPrecisionModel().compareTo(e.getPrecisionModel())>=0?this.setComputationPrecision(t.getPrecisionModel()):this.setComputationPrecision(e.getPrecisionModel()),this._arg=new Array(2).fill(null),this._arg[0]=new NX(0,t,r),this._arg[1]=new NX(1,e,r)}};class UX{constructor(){UX.constructor_.apply(this,arguments)}static contains(t,e){return new UX(t).contains(e)}isContainedInBoundary(t){if(t instanceof rW)return!1;if(t instanceof HY)return this.isPointContainedInBoundary(t);if(t instanceof WY)return this.isLineStringContainedInBoundary(t);for(var e=0;e0){var n=t;t=e,e=n}var i=!1;return e.y>t.y&&(i=!0),i?this._li.computeIntersection(t,e,this._diagDown0,this._diagDown1):this._li.computeIntersection(t,e,this._diagUp0,this._diagUp1),!!this._li.hasIntersection()}getClass(){return BX}get interfaces_(){return[]}}BX.constructor_=function(){this._li=new UW,this._rectEnv=null,this._diagUp0=null,this._diagUp1=null,this._diagDown0=null,this._diagDown1=null;let t=arguments[0];this._rectEnv=t,this._diagUp0=new zq(t.getMinX(),t.getMinY()),this._diagUp1=new zq(t.getMaxX(),t.getMaxY()),this._diagDown0=new zq(t.getMinX(),t.getMaxY()),this._diagDown1=new zq(t.getMaxX(),t.getMinY())};class zX{constructor(){zX.constructor_.apply(this,arguments)}applyTo(t){for(var e=0;e=this._rectEnv.getMinX()&&e.getMaxX()<=this._rectEnv.getMaxX()||e.getMinY()>=this._rectEnv.getMinY()&&e.getMaxY()<=this._rectEnv.getMaxY()?(this._intersects=!0,null):void 0:null}intersects(){return this._intersects}getClass(){return qX}get interfaces_(){return[]}}qX.constructor_=function(){this._rectEnv=null,this._intersects=!1;let t=arguments[0];this._rectEnv=t};class YX extends zX{constructor(){super(),YX.constructor_.apply(this,arguments)}isDone(){return!0===this._containsPoint}visit(t){if(!(t instanceof rW))return null;var e=t.getEnvelopeInternal();if(!this._rectEnv.intersects(e))return null;for(var r=new zq,n=0;n<4;n++)if(this._rectSeq.getCoordinate(n,r),e.contains(r)&&nX.containsPointInPolygon(r,t))return this._containsPoint=!0,null}containsPoint(){return this._containsPoint}getClass(){return YX}get interfaces_(){return[]}}YX.constructor_=function(){this._rectSeq=null,this._rectEnv=null,this._containsPoint=!1;let t=arguments[0];this._rectSeq=t.getExteriorRing().getCoordinateSequence(),this._rectEnv=t.getEnvelopeInternal()};class WX extends zX{constructor(){super(),WX.constructor_.apply(this,arguments)}intersects(){return this._hasIntersection}isDone(){return!0===this._hasIntersection}visit(t){var e=t.getEnvelopeInternal();if(!this._rectEnv.intersects(e))return null;var r=vX.getLines(t);this.checkIntersectionWithLineStrings(r)}checkIntersectionWithLineStrings(t){for(var e=t.iterator();e.hasNext();){var r=e.next();if(this.checkIntersectionWithSegments(r),this._hasIntersection)return null}}checkIntersectionWithSegments(t){for(var e=t.getCoordinateSequence(),r=1;r0)&&(!!t.getEnvelopeInternal().covers(e.getEnvelopeInternal())&&(!!t.isRectangle()||new XX(t,e).getIntersectionMatrix().isCovers())))}static intersects(t,e){if(!t.getEnvelopeInternal().intersects(e.getEnvelopeInternal()))return!1;if(t.isRectangle())return VX.intersects(t,e);if(e.isRectangle())return VX.intersects(e,t);if(t.isGeometryCollection()||e.isGeometryCollection()){for(var r=0;r0)&&(!!t.getEnvelopeInternal().contains(e.getEnvelopeInternal())&&(t.isRectangle()?UX.contains(t,e):new XX(t,e).getIntersectionMatrix().isContains())))}getIntersectionMatrix(){return this._relate.computeIM()}getClass(){return XX}get interfaces_(){return[]}}function HX(t){return function(t){if(Array.isArray(t))return ZX(t)}(t)||function(t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(!t)return;if("string"==typeof t)return ZX(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);"Object"===r&&t.constructor&&(r=t.constructor.name);if("Map"===r||"Set"===r)return Array.from(t);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return ZX(t,e)}(t)||function(){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 ZX(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r=0;r--){var u=o[r][0];if(Object(mt.h)(new ia(u).getExtent(),new ia(s).getExtent())){o[r].push(s),l=!0;break}}l||o.push([s.reverse()])}return o}(o.rings,a);1===s.length?(i=fo.a.POLYGON,t=Object(ii.a)({},t,((r={}).rings=s[0],r))):(i=fo.a.MULTI_POLYGON,t=Object(ii.a)({},t,((n={}).rings=s,n)))}return LI((0,uH[i])(t),!1,e)}function fH(t){var e=Io;return!0===t.hasZ&&!0===t.hasM?e=Po:!0===t.hasZ?e=Co:!0===t.hasM&&(e=To),e}function pH(t){var e=t.getLayout();return{hasZ:e===Co||e===Po,hasM:e===To||e===Po}}function dH(t,e){return(0,cH[t.getType()])(LI(t,!0,e),e)}cH[fo.a.POINT]=function(t,e){var r,n=t.getCoordinates(),i=t.getLayout();i===Co?r={x:n[0],y:n[1],z:n[2]}:i===To?r={x:n[0],y:n[1],m:n[2]}:i===Po?r={x:n[0],y:n[1],z:n[2],m:n[3]}:i===Io?r={x:n[0],y:n[1]}:Object(Ui.a)(!1,34);return r},cH[fo.a.LINE_STRING]=function(t,e){var r=pH(t);return{hasZ:r.hasZ,hasM:r.hasM,paths:[t.getCoordinates()]}},cH[fo.a.POLYGON]=function(t,e){var r=pH(t);return{hasZ:r.hasZ,hasM:r.hasM,rings:t.getCoordinates(!1)}},cH[fo.a.MULTI_POINT]=function(t,e){var r=pH(t);return{hasZ:r.hasZ,hasM:r.hasM,points:t.getCoordinates()}},cH[fo.a.MULTI_LINE_STRING]=function(t,e){var r=pH(t);return{hasZ:r.hasZ,hasM:r.hasM,paths:t.getCoordinates()}},cH[fo.a.MULTI_POLYGON]=function(t,e){for(var r=pH(t),n=t.getCoordinates(!1),i=[],o=0;o=0;a--)i.push(n[o][a]);return{hasZ:r.hasZ,hasM:r.hasM,rings:i}};var gH=function(t){function e(e){var r=this,n=e||{};return(r=t.call(this)||this).geometryName_=n.geometryName,r}return lH(e,t),e.prototype.readFeatureFromObject=function(t,e,r){var n=t,i=hH(n.geometry,e),o=new Wc;if(this.geometryName_&&o.setGeometryName(this.geometryName_),o.setGeometry(i),n.attributes){o.setProperties(n.attributes,!0);var a=n.attributes[r];void 0!==a&&o.setId(a)}return o},e.prototype.readFeaturesFromObject=function(t,e){var r=e||{};if(t.features){for(var n=[],i=t.features,o=0,a=i.length;o1,n=r&&t.imageInfo.profile[1].supports?t.imageInfo.profile[1].supports:[],i=r&&t.imageInfo.profile[1].formats?t.imageInfo.profile[1].formats:[],o=r&&t.imageInfo.profile[1].qualities?t.imageInfo.profile[1].qualities:[];return{url:t.imageInfo["@id"].replace(/\/?(?:info\.json)?$/g,""),sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return void 0===t.height?t.width:t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:sZ(sZ([],e.supports,!0),n,!0),formats:sZ(sZ([],e.formats,!0),i,!0),qualities:sZ(sZ([],e.qualities,!0),o,!0)}},gZ[cZ]=function(t){var e=t.getComplianceLevelSupportedFeatures(),r=void 0===t.imageInfo.extraFormats?e.formats:sZ(sZ([],e.formats,!0),t.imageInfo.extraFormats,!0),n=void 0!==t.imageInfo.preferredFormats&&Array.isArray(t.imageInfo.preferredFormats)&&t.imageInfo.preferredFormats.length>0?t.imageInfo.preferredFormats.filter((function(t){return Object(h.f)(["jpg","png","gif"],t)})).reduce((function(t,e){return void 0===t&&Object(h.f)(r,e)?e:t}),void 0):void 0;return{url:t.imageInfo.id,sizes:void 0===t.imageInfo.sizes?void 0:t.imageInfo.sizes.map((function(t){return[t.width,t.height]})),tileSize:void 0===t.imageInfo.tiles?void 0:[t.imageInfo.tiles.map((function(t){return t.width}))[0],t.imageInfo.tiles.map((function(t){return t.height}))[0]],resolutions:void 0===t.imageInfo.tiles?void 0:t.imageInfo.tiles.map((function(t){return t.scaleFactors}))[0],supports:void 0===t.imageInfo.extraFeatures?e.supports:sZ(sZ([],e.supports,!0),t.imageInfo.extraFeatures,!0),formats:r,qualities:void 0===t.imageInfo.extraQualities?e.qualities:sZ(sZ([],e.qualities,!0),t.imageInfo.extraQualities,!0),preferredFormat:n}};var yZ=function(){function t(t){this.setImageInfo(t)}return t.prototype.setImageInfo=function(t){this.imageInfo="string"==typeof t?JSON.parse(t):t},t.prototype.getImageApiVersion=function(){if(void 0!==this.imageInfo){var t=this.imageInfo["@context"]||"ol-no-context";"string"==typeof t&&(t=[t]);for(var e=0;e0&&"string"==typeof this.imageInfo.profile[0]&&pZ.test(this.imageInfo.profile[0]))return this.imageInfo.profile[0]}},t.prototype.getComplianceLevelFromProfile=function(t){var e=this.getComplianceLevelEntryFromProfile(t);if(void 0!==e){var r=e.match(/level[0-2](?:\.json)?$/g);return Array.isArray(r)?r[0].replace(".json",""):void 0}},t.prototype.getComplianceLevelSupportedFeatures=function(){if(void 0!==this.imageInfo){var t=this.getImageApiVersion(),e=this.getComplianceLevelFromProfile(t);return void 0===e?hZ.none.none:hZ[t][e]}},t.prototype.getTileSourceOptions=function(t){var e=t||{},r=this.getImageApiVersion();if(void 0!==r){var n=void 0===r?void 0:gZ[r](this);if(void 0!==n)return{url:n.url,version:r,size:[this.imageInfo.width,this.imageInfo.height],sizes:n.sizes,format:void 0!==e.format&&Object(h.f)(n.formats,e.format)?e.format:void 0!==n.preferredFormat?n.preferredFormat:"jpg",supports:n.supports,quality:e.quality&&Object(h.f)(n.qualities,e.quality)?e.quality:Object(h.f)(n.qualities,"native")?"native":"default",resolutions:Array.isArray(n.resolutions)?n.resolutions.sort((function(t,e){return e-t})):void 0,tileSize:n.tileSize}}},t}(),mZ=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),_Z=[null],vZ=T(_Z,{nd:function(t,e){e[e.length-1].ndrefs.push(t.getAttribute("ref"))},tag:EZ}),bZ=T(_Z,{node:function(t,e){var r=e[0],n=e[e.length-1],i=t.getAttribute("id"),o=[parseFloat(t.getAttribute("lon")),parseFloat(t.getAttribute("lat"))];n.nodes[i]=o;var a=R({tags:{}},wZ,t,e);if(!Object(ii.d)(a.tags)){var s=new aa(o);LI(s,!1,r);var l=new Wc(s);void 0!==i&&l.setId(i),l.setProperties(a.tags,!0),n.features.push(l)}},way:function(t,e){var r=R({id:t.getAttribute("id"),ndrefs:[],tags:{}},vZ,t,e);e[e.length-1].ways.push(r)}}),xZ=function(t){function e(){var e=t.call(this)||this;return e.dataProjection=Object(u.o)("EPSG:4326"),e}return mZ(e,t),e.prototype.readFeaturesFromNode=function(t,e){var r=this.getReadOptions(t,e);if("osm"==t.localName){for(var n=R({nodes:{},ways:[],features:[]},bZ,t,[r]),i=0;i>1):i>>1}return e}(t),i=0,o=n.length;i=32;)e=63+(32|31&t),r+=String.fromCharCode(e),t>>=5;return e=t+63,r+=String.fromCharCode(e)}var MZ=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.dataProjection=Object(u.o)("EPSG:4326"),r.factor_=n.factor?n.factor:1e5,r.geometryLayout_=n.geometryLayout?n.geometryLayout:Io,r}return IZ(e,t),e.prototype.readFeatureFromText=function(t,e){var r=this.readGeometryFromText(t,e);return new Wc(r)},e.prototype.readFeaturesFromText=function(t,e){return[this.readFeatureFromText(t,e)]},e.prototype.readGeometryFromText=function(t,e){var r=Fo(this.geometryLayout_),n=TZ(t,r,this.factor_);SZ(n,0,n.length,r,n);var i=$o(n,0,n.length,r);return LI(new Qc(i,this.geometryLayout_),!1,this.adaptOptions(e))},e.prototype.writeFeatureText=function(t,e){var r=t.getGeometry();return r?this.writeGeometryText(r,e):(Object(Ui.a)(!1,40),"")},e.prototype.writeFeaturesText=function(t,e){return this.writeFeatureText(t[0],e)},e.prototype.writeGeometryText=function(t,e){var r=(t=LI(t,!0,this.adaptOptions(e))).getFlatCoordinates(),n=t.getStride();return SZ(r,0,r.length,n,r),CZ(r,n,this.factor_)},e}(HG),NZ=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),AZ=function(t){function e(e){var r=t.call(this)||this,n=e||{};return r.layerName_=n.layerName,r.layers_=n.layers?n.layers:null,r.dataProjection=Object(u.o)(n.dataProjection?n.dataProjection:"EPSG:4326"),r}return NZ(e,t),e.prototype.readFeaturesFromObject=function(t,e){if("Topology"==t.type){var r=t,n=void 0,i=null,o=null;r.transform&&(i=(n=r.transform).scale,o=n.translate);var a=r.arcs;n&&function(t,e,r){for(var n=0,i=t.length;n0&&n.pop(),r>=0)for(var a=0,s=(l=e[r]).length;a=0;--a)n.push(l[a].slice(0))}return n}function FZ(t,e,r,n,i,o,a){for(var s=t.geometries,l=[],u=0,c=s.length;u0,r=this.readUint32(e),n=Math.floor((268435455&r)/1e3),i=Boolean(2147483648&r)||1===n||3===n,o=Boolean(1073741824&r)||2===n||3===n,a=Boolean(536870912&r),s=(268435455&r)%1e3,l=["XY",i?"Z":"",o?"M":""].join(""),u=a?this.readUint32(e):null;if(void 0!==t&&t!==s)throw new Error("Unexpected WKB geometry type "+s);if(this.initialized_){if(this.isLittleEndian_!==e)throw new Error("Inconsistent endian");if(this.layout_!==l)throw new Error("Inconsistent geometry layout");if(u&&this.srid_!==u)throw new Error("Inconsistent coordinate system (SRID)")}else this.isLittleEndian_=e,this.hasZ_=i,this.hasM_=o,this.layout_=l,this.srid_=u,this.initialized_=!0;return s},t.prototype.readWkbPayload=function(t){switch(t){case VZ:return this.readPoint();case qZ:return this.readLineString();case YZ:case $Z:return this.readPolygon();case WZ:return this.readMultiPoint();case XZ:return this.readMultiLineString();case HZ:case KZ:case JZ:return this.readMultiPolygon();case ZZ:return this.readGeometryCollection();default:throw new Error("Unsupported WKB geometry type "+t+" is found")}},t.prototype.readWkbBlock=function(t){return this.readWkbPayload(this.readWkbHeader(t))},t.prototype.readWkbCollection=function(t,e){for(var r=this.readUint32(),n=[],i=0;i=0&&(t+=this.isEWKB_?2147483648:1e3),this.layout_.indexOf("M")>=0&&(t+=this.isEWKB_?1073741824:2e3),this.isEWKB_&&Number.isInteger(e)&&(t|=536870912),this.writeUint8(this.isLittleEndian_?1:0),this.writeUint32(t),this.isEWKB_&&Number.isInteger(e)&&this.writeUint32(e)},t.prototype.writeMultiPoint=function(t,e){this.writeUint32(t.length);for(var r=0;r0){this.source_&&(this.source_.clear(),this.source_.addFeatures(h)),this.dispatchEvent(new sK(aK,t,h,o));break}}},e.prototype.registerListeners_=function(){var t=this.getMap();if(t){var e=this.target?this.target:t.getViewport();this.dropListenKeys_=[Object(Ci.a)(e,Di.a.DROP,this.handleDrop,this),Object(Ci.a)(e,Di.a.DRAGENTER,this.handleStop,this),Object(Ci.a)(e,Di.a.DRAGOVER,this.handleStop,this),Object(Ci.a)(e,Di.a.DROP,this.handleStop,this)]}},e.prototype.setActive=function(e){!this.getActive()&&e&&this.registerListeners_(),this.getActive()&&!e&&this.unregisterListeners_(),t.prototype.setActive.call(this,e)},e.prototype.setMap=function(e){this.unregisterListeners_(),t.prototype.setMap.call(this,e),this.getActive()&&this.registerListeners_()},e.prototype.tryReadFeatures_=function(t,e,r){try{return t.readFeatures(e,r)}catch(t){return null}},e.prototype.unregisterListeners_=function(){this.dropListenKeys_&&(this.dropListenKeys_.forEach(Ci.c),this.dropListenKeys_=null)},e.prototype.handleDrop=function(t){for(var e=t.dataTransfer.files,r=0,n=e.length;r1?1:-1;return e.endInteraction(this.duration_,r),this.lastScaleDelta_=0,!1},e.prototype.handleDownEvent=function(t){return!!gs(t)&&(!!this.condition_(t)&&(t.map.getView().beginInteraction(),this.lastAngle_=void 0,this.lastMagnitude_=void 0,!0))},e}(rs),hK=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),fK="Point",pK="LineString",dK="Polygon",gK="Circle",yK="drawstart",mK="drawend",_K="drawabort",vK=function(t){function e(e,r){var n=t.call(this,e)||this;return n.feature=r,n}return hK(e,t),e}(Ni.a);var bK=function(t){function e(e){var r=this,n=e;n.stopDown||(n.stopDown=Dn.a),(r=t.call(this,n)||this).on,r.once,r.un,r.shouldHandle_=!1,r.downPx_=null,r.downTimeout_,r.lastDragTime_,r.pointerType_,r.freehand_=!1,r.source_=e.source?e.source:null,r.features_=e.features?e.features:null,r.snapTolerance_=e.snapTolerance?e.snapTolerance:12,r.type_=e.type,r.mode_=function(t){switch(t){case fo.a.POINT:case fo.a.MULTI_POINT:return fK;case fo.a.LINE_STRING:case fo.a.MULTI_LINE_STRING:return pK;case fo.a.POLYGON:case fo.a.MULTI_POLYGON:return dK;case fo.a.CIRCLE:return gK;default:throw new Error("Invalid type: "+t)}}(r.type_),r.stopClick_=!!e.stopClick,r.minPoints_=e.minPoints?e.minPoints:r.mode_===dK?3:2,r.maxPoints_=r.mode_===gK?2:e.maxPoints?e.maxPoints:1/0,r.finishCondition_=e.finishCondition?e.finishCondition:Dn.b;var i,o=e.geometryFunction;if(!o){var a,s=r.mode_;if(s===gK)o=function(t,e,r){var n=e||new dh([NaN,NaN]),i=Object(u.l)(t[0],r),o=Object(Wn.l)(i,Object(u.l)(t[t.length-1],r));n.setCenterAndRadius(i,Math.sqrt(o));var a=Object(u.s)();return a&&n.transform(r,a),n};else s===fK?a=aa:s===pK?a=Qc:s===dK&&(a=Oa),o=function(t,e,r){return e?s===dK?t[0].length?e.setCoordinates([t[0].concat([t[0][0]])]):e.setCoordinates([]):e.setCoordinates(t):e=new a(t),e}}return r.geometryFunction_=o,r.dragVertexDelay_=void 0!==e.dragVertexDelay?e.dragVertexDelay:500,r.finishCoordinate_=null,r.sketchFeature_=null,r.sketchPoint_=null,r.sketchCoords_=null,r.sketchLine_=null,r.sketchLineCoords_=null,r.squaredClickTolerance_=e.clickTolerance?e.clickTolerance*e.clickTolerance:36,r.overlay_=new jv({source:new Tg({useSpatialIndex:!1,wrapX:!!e.wrapX&&e.wrapX}),style:e.style?e.style:(i=Ky(),function(t,e){return i[t.getGeometry().getType()]}),updateWhileInteracting:!0}),r.geometryName_=e.geometryName,r.condition_=e.condition?e.condition:fs,r.freehandCondition_,e.freehand?r.freehandCondition_=ls:r.freehandCondition_=e.freehandCondition?e.freehandCondition:ps,r.addChangeListener(Ha,r.updateState_),r}return hK(e,t),e.prototype.setMap=function(e){t.prototype.setMap.call(this,e),this.updateState_()},e.prototype.getOverlay=function(){return this.overlay_},e.prototype.handleEvent=function(e){e.originalEvent.type===Di.a.CONTEXTMENU&&e.originalEvent.preventDefault(),this.freehand_=this.mode_!==fK&&this.freehandCondition_(e);var r=e.type===Zi.POINTERMOVE,n=!0;!this.freehand_&&this.lastDragTime_&&e.type===Zi.POINTERDRAG&&(Date.now()-this.lastDragTime_>=this.dragVertexDelay_?(this.downPx_=e.pixel,this.shouldHandle_=!this.freehand_,r=!0):this.lastDragTime_=void 0,this.shouldHandle_&&void 0!==this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0));return this.freehand_&&e.type===Zi.POINTERDRAG&&null!==this.sketchFeature_?(this.addToDrawing_(e.coordinate),n=!1):this.freehand_&&e.type===Zi.POINTERDOWN?n=!1:r&&this.getPointerCount()<2?(n=e.type===Zi.POINTERMOVE)&&this.freehand_?(this.handlePointerMove_(e),this.shouldHandle_&&e.originalEvent.preventDefault()):("mouse"===e.originalEvent.pointerType||e.type===Zi.POINTERDRAG&&void 0===this.downTimeout_)&&this.handlePointerMove_(e):e.type===Zi.DBLCLICK&&(n=!1),t.prototype.handleEvent.call(this,e)&&n},e.prototype.handleDownEvent=function(t){return this.shouldHandle_=!this.freehand_,this.freehand_?(this.downPx_=t.pixel,this.finishCoordinate_||this.startDrawing_(t.coordinate),!0):this.condition_(t)?(this.lastDragTime_=Date.now(),this.downTimeout_=setTimeout(function(){this.handlePointerMove_(new Hi(Zi.POINTERMOVE,t.map,t.originalEvent,!1,t.frameState))}.bind(this),this.dragVertexDelay_),this.downPx_=t.pixel,!0):(this.lastDragTime_=void 0,!1)},e.prototype.handleUpEvent=function(t){var e=!0;if(0===this.getPointerCount())if(this.downTimeout_&&(clearTimeout(this.downTimeout_),this.downTimeout_=void 0),this.handlePointerMove_(t),this.shouldHandle_){var r=!this.finishCoordinate_;r&&this.startDrawing_(t.coordinate),!r&&this.freehand_?this.finishDrawing():this.freehand_||r&&this.mode_!==fK||(this.atFinish_(t.pixel)?this.finishCondition_(t)&&this.finishDrawing():this.addToDrawing_(t.coordinate)),e=!1}else this.freehand_&&this.abortDrawing();return!e&&this.stopClick_&&t.preventDefault(),e},e.prototype.handlePointerMove_=function(t){if(this.pointerType_=t.originalEvent.pointerType,this.downPx_&&(!this.freehand_&&this.shouldHandle_||this.freehand_&&!this.shouldHandle_)){var e=this.downPx_,r=t.pixel,n=e[0]-r[0],i=e[1]-r[1],o=n*n+i*i;if(this.shouldHandle_=this.freehand_?o>this.squaredClickTolerance_:o<=this.squaredClickTolerance_,!this.shouldHandle_)return}this.finishCoordinate_?this.modifyDrawing_(t.coordinate):this.createOrUpdateSketchPoint_(t.coordinate.slice())},e.prototype.atFinish_=function(t){var e=!1;if(this.sketchFeature_){var r=!1,n=[this.finishCoordinate_],i=this.mode_;if(i===fK)e=!0;else if(i===gK)e=2===this.sketchCoords_.length;else if(i===pK)r=this.sketchCoords_.length>this.minPoints_;else if(i===dK){var o=this.sketchCoords_;r=o[0].length>this.minPoints_,n=[o[0][0],o[0][o[0].length-2]]}if(r)for(var a=this.getMap(),s=0,l=n.length;s=this.maxPoints_&&(this.freehand_?r.pop():e=!0),r.push(t.slice()),this.geometryFunction_(r,n,i)):o===dK&&((r=this.sketchCoords_[0]).length>=this.maxPoints_&&(this.freehand_?r.pop():e=!0),r.push(t.slice()),e&&(this.finishCoordinate_=r[0]),this.geometryFunction_(this.sketchCoords_,n,i)),this.createOrUpdateSketchPoint_(t.slice()),this.updateSketchFeatures_(),e&&this.finishDrawing()},e.prototype.removeLastPoint=function(){if(this.sketchFeature_){var t,e=this.sketchFeature_.getGeometry(),r=this.getMap().getView().getProjection(),n=this.mode_;if(n===pK||n===gK){if((t=this.sketchCoords_).splice(-2,1),t.length>=2){this.finishCoordinate_=t[t.length-2].slice();var i=this.finishCoordinate_.slice();t[t.length-1]=i,this.createOrUpdateSketchPoint_(i)}this.geometryFunction_(t,e,r),e.getType()===fo.a.POLYGON&&this.sketchLine_&&this.createOrUpdateCustomSketchLine_(e)}else if(n===dK){(t=this.sketchCoords_[0]).splice(-2,1);var o=this.sketchLine_.getGeometry();if(t.length>=2){i=t[t.length-2].slice();t[t.length-1]=i,this.createOrUpdateSketchPoint_(i)}o.setCoordinates(t),this.geometryFunction_(this.sketchCoords_,e,r)}1===t.length&&this.abortDrawing(),this.updateSketchFeatures_()}},e.prototype.finishDrawing=function(){var t=this.abortDrawing_();if(t){var e=this.sketchCoords_,r=t.getGeometry(),n=this.getMap().getView().getProjection();this.mode_===pK?(e.pop(),this.geometryFunction_(e,r,n)):this.mode_===dK&&(e[0].pop(),this.geometryFunction_(e,r,n),e=r.getCoordinates()),this.type_===fo.a.MULTI_POINT?t.setGeometry(new Hc([e])):this.type_===fo.a.MULTI_LINE_STRING?t.setGeometry(new eh([e])):this.type_===fo.a.MULTI_POLYGON&&t.setGeometry(new ih([e])),this.dispatchEvent(new vK(mK,t)),this.features_&&this.features_.push(t),this.source_&&this.source_.addFeature(t)}},e.prototype.abortDrawing_=function(){this.finishCoordinate_=null;var t=this.sketchFeature_;return this.sketchFeature_=null,this.sketchPoint_=null,this.sketchLine_=null,this.overlay_.getSource().clear(!0),t},e.prototype.abortDrawing=function(){var t=this.abortDrawing_();t&&this.dispatchEvent(new vK(_K,t))},e.prototype.appendCoordinates=function(t){var e,r=this.mode_,n=!this.sketchFeature_;if(n&&this.startDrawing_(t[0]),r===pK||r===gK)e=this.sketchCoords_;else{if(r!==dK)return;e=this.sketchCoords_&&this.sketchCoords_.length?this.sketchCoords_[0]:[]}n&&e.shift(),e.pop();for(var i=0;ih?o[1]:o[0]),a}}return null},e.prototype.handlePointerMove_=function(t){var e=t.pixel,r=t.map,n=this.snapToVertex_(e,r);n||(n=r.getCoordinateFromPixelInternal(e)),this.createOrUpdatePointerFeature_(n)},e.prototype.createOrUpdateExtentFeature_=function(t){var e=this.extentFeature_;return e?t?e.setGeometry(Ia(t)):e.setGeometry(void 0):(e=new Wc(t?Ia(t):{}),this.extentFeature_=e,this.extentOverlay_.getSource().addFeature(e)),e},e.prototype.createOrUpdatePointerFeature_=function(t){var e=this.vertexFeature_;e?e.getGeometry().setCoordinates(t):(e=new Wc(new aa(t)),this.vertexFeature_=e,this.vertexOverlay_.getSource().addFeature(e));return e},e.prototype.handleEvent=function(e){return!e.originalEvent||!this.condition_(e)||(e.type!=Zi.POINTERMOVE||this.handlingDownUpSequence||this.handlePointerMove_(e),t.prototype.handleEvent.call(this,e),!1)},e.prototype.handleDownEvent=function(t){var e=t.pixel,r=t.map,n=this.getExtentInternal(),i=this.snapToVertex_(e,r),o=function(t){var e=null,r=null;return t[0]==n[0]?e=n[2]:t[0]==n[2]&&(e=n[0]),t[1]==n[1]?r=n[3]:t[1]==n[3]&&(r=n[1]),null!==e&&null!==r?[e,r]:null};if(i&&n){var a=i[0]==n[0]||i[0]==n[2]?i[0]:null,s=i[1]==n[1]||i[1]==n[3]?i[1]:null;null!==a&&null!==s?this.pointerHandler_=SK(o(i)):null!==a?this.pointerHandler_=IK(o([a,n[1]]),o([a,n[3]])):null!==s&&(this.pointerHandler_=IK(o([n[0],s]),o([n[2],s])))}else i=r.getCoordinateFromPixelInternal(e),this.setExtent([i[0],i[1],i[0],i[1]]),this.pointerHandler_=SK(i);return!0},e.prototype.handleDragEvent=function(t){if(this.pointerHandler_){var e=t.coordinate;this.setExtent(this.pointerHandler_(e)),this.createOrUpdatePointerFeature_(e)}},e.prototype.handleUpEvent=function(t){this.pointerHandler_=null;var e=this.getExtentInternal();return e&&0!==Object(mt.u)(e)||this.setExtent(null),!1},e.prototype.setMap=function(e){this.extentOverlay_.setMap(e),this.vertexOverlay_.setMap(e),t.prototype.setMap.call(this,e)},e.prototype.getExtent=function(){return Object(u.x)(this.getExtentInternal(),this.getMap().getView().getProjection())},e.prototype.getExtentInternal=function(){return this.extent_},e.prototype.setExtent=function(t){this.extent_=t||null,this.createOrUpdateExtentFeature_(t),this.dispatchEvent(new EK(this.extent_))},e}(rs);function TK(t){return(TK="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var PK=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),RK=[0,0,0,0],LK=[],MK="modifystart",NK="modifyend",AK=function(t){function e(e,r,n){var i=t.call(this,e)||this;return i.features=r,i.mapBrowserEvent=n,i}return PK(e,t),e}(Ni.a);function kK(t,e){return t.index-e.index}function jK(t,e,r){var n=e.geometry;if(n.getType()===fo.a.CIRCLE){var i=n;if(1===e.index){var o=Object(u.s)();o&&(i=i.clone().transform(o,r));var a=Object(Wn.l)(i.getCenter(),Object(u.l)(t,r)),s=Math.sqrt(a)-i.getRadius();return s*s}}var l=Object(u.l)(t,r);return LK[0]=Object(u.l)(e.segment[0],r),LK[1]=Object(u.l)(e.segment[1],r),Object(Wn.m)(l,LK)}function FK(t,e,r){var n=e.geometry;if(n.getType()===fo.a.CIRCLE&&1===e.index){var i=n,o=Object(u.s)();return o&&(i=i.clone().transform(o,r)),Object(u.w)(i.getClosestPoint(Object(u.l)(t,r)),r)}var a=Object(u.l)(t,r);return LK[0]=Object(u.l)(e.segment[0],r),LK[1]=Object(u.l)(e.segment[1],r),Object(u.w)(Object(Wn.c)(a,LK),r)}var DK=function(t){function e(e){var r,n,i=t.call(this,e)||this;if(i.on,i.once,i.un,i.boundHandleFeatureChange_=i.handleFeatureChange_.bind(i),i.condition_=e.condition?e.condition:ys,i.defaultDeleteCondition_=function(t){return is(t)&&hs(t)},i.deleteCondition_=e.deleteCondition?e.deleteCondition:i.defaultDeleteCondition_,i.insertVertexCondition_=e.insertVertexCondition?e.insertVertexCondition:ls,i.vertexFeature_=null,i.vertexSegments_=null,i.lastPixel_=[0,0],i.ignoreNextSingleClick_=!1,i.featuresBeingModified_=null,i.rBush_=new ug,i.pixelTolerance_=void 0!==e.pixelTolerance?e.pixelTolerance:10,i.snappedToVertex_=!1,i.changingFeature_=!1,i.dragSegments_=[],i.overlay_=new jv({source:new Tg({useSpatialIndex:!1,wrapX:!!e.wrapX}),style:e.style?e.style:(r=Ky(),function(t,e){return r[fo.a.POINT]}),updateWhileAnimating:!0,updateWhileInteracting:!0}),i.SEGMENT_WRITERS_={Point:i.writePointGeometry_.bind(i),LineString:i.writeLineStringGeometry_.bind(i),LinearRing:i.writeLineStringGeometry_.bind(i),Polygon:i.writePolygonGeometry_.bind(i),MultiPoint:i.writeMultiPointGeometry_.bind(i),MultiLineString:i.writeMultiLineStringGeometry_.bind(i),MultiPolygon:i.writeMultiPolygonGeometry_.bind(i),Circle:i.writeCircleGeometry_.bind(i),GeometryCollection:i.writeGeometryCollectionGeometry_.bind(i)},i.source_=null,i.hitDetection_=null,e.features?n=e.features:e.source&&(i.source_=e.source,n=new Fi(i.source_.getFeatures()),i.source_.addEventListener(hg,i.handleSourceAdd_.bind(i)),i.source_.addEventListener(dg,i.handleSourceRemove_.bind(i))),!n)throw new Error("The modify interaction requires features, a source or a layer");return e.hitDetection&&(i.hitDetection_=e.hitDetection),i.features_=n,i.features_.forEach(i.addFeature_.bind(i)),i.features_.addEventListener(Li,i.handleFeatureAdd_.bind(i)),i.features_.addEventListener(Mi,i.handleFeatureRemove_.bind(i)),i.lastPointerEvent_=null,i.delta_=[0,0],i.snapToPointer_=void 0===e.snapToPointer?!i.hitDetection_:e.snapToPointer,i}return PK(e,t),e.prototype.addFeature_=function(t){var e=t.getGeometry();if(e){var r=this.SEGMENT_WRITERS_[e.getType()];r&&r(t,e)}var n=this.getMap();n&&n.isRendered()&&this.getActive()&&this.handlePointerAtPixel_(this.lastPixel_,n),t.addEventListener(Di.a.CHANGE,this.boundHandleFeatureChange_)},e.prototype.willModifyFeatures_=function(t,e){if(!this.featuresBeingModified_){this.featuresBeingModified_=new Fi;for(var r=this.featuresBeingModified_.getArray(),n=0,i=e.length;n=0;--n){for(var i=r[n],o=this.dragSegments_.length-1;o>=0;--o)this.dragSegments_[o][0]===i&&this.dragSegments_.splice(o,1);e.remove(i)}},e.prototype.setActive=function(e){this.vertexFeature_&&!e&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),t.prototype.setActive.call(this,e)},e.prototype.setMap=function(e){this.overlay_.setMap(e),t.prototype.setMap.call(this,e)},e.prototype.getOverlay=function(){return this.overlay_},e.prototype.handleSourceAdd_=function(t){t.feature&&this.features_.push(t.feature)},e.prototype.handleSourceRemove_=function(t){t.feature&&this.features_.remove(t.feature)},e.prototype.handleFeatureAdd_=function(t){this.addFeature_(t.element)},e.prototype.handleFeatureChange_=function(t){if(!this.changingFeature_){var e=t.target;this.removeFeature_(e),this.addFeature_(e)}},e.prototype.handleFeatureRemove_=function(t){var e=t.element;this.removeFeature_(e)},e.prototype.writePointGeometry_=function(t,e){var r=e.getCoordinates(),n={feature:t,geometry:e,segment:[r,r]};this.rBush_.insert(e.getExtent(),n)},e.prototype.writeMultiPointGeometry_=function(t,e){for(var r=e.getCoordinates(),n=0,i=r.length;n=0;--y)this.insertVertex_(i[y],o)}return!!this.vertexFeature_},e.prototype.handleUpEvent=function(t){for(var e=this.dragSegments_.length-1;e>=0;--e){var r=this.dragSegments_[e][0],n=r.geometry;if(n.getType()===fo.a.CIRCLE){var i=n.getCenter(),o=r.featureSegments[0],a=r.featureSegments[1];o.segment[0]=i,o.segment[1]=i,a.segment[0]=i,a.segment[1]=i,this.rBush_.update(Object(mt.n)(i),o);var s=n,l=Object(u.s)();if(l){var c=t.map.getView().getProjection();s=Ca(s=s.clone().transform(l,c)).transform(c,l)}this.rBush_.update(s.getExtent(),a)}else this.rBush_.update(Object(mt.c)(r.segment),r)}return this.featuresBeingModified_&&(this.dispatchEvent(new AK(NK,this.featuresBeingModified_,t)),this.featuresBeingModified_=null),!1},e.prototype.handlePointerMove_=function(t){this.lastPixel_=t.pixel,this.handlePointerAtPixel_(t.pixel,t.map,t.coordinate)},e.prototype.handlePointerAtPixel_=function(t,e,r){var n,i,o=this,a=r||e.getCoordinateFromPixel(t),s=e.getView().getProjection();if(this.hitDetection_){var l="object"===TK(this.hitDetection_)?function(t){return t===o.hitDetection_}:void 0;e.forEachFeatureAtPixel(t,(function(t,e,r){if((r=r||t.getGeometry()).getType()===fo.a.POINT&&Object(h.f)(o.features_.getArray(),t)){i=r;var a=r.getFlatCoordinates().slice(0,2);n=[{feature:t,geometry:r,segment:[a,a]}]}return!0}),{layerFilter:l})}if(!n){var c=Object(u.m)(Object(mt.n)(a,RK),s),f=e.getView().getResolution()*this.pixelTolerance_,p=Object(u.x)(Object(mt.d)(c,f,RK),s);n=this.rBush_.getInExtent(p)}if(n&&n.length>0){var d=n.sort((function(t,e){return jK(a,t,s)-jK(a,e,s)}))[0],g=d.segment,y=FK(a,d,s),m=e.getPixelFromCoordinate(y),_=Object(Wn.f)(t,m);if(i||_<=this.pixelTolerance_){var v={};if(v[Object(Gn.c)(g)]=!0,this.snapToPointer_||(this.delta_[0]=y[0]-a[0],this.delta_[1]=y[1]-a[1]),d.geometry.getType()===fo.a.CIRCLE&&1===d.index)this.snappedToVertex_=!0,this.createOrUpdateVertexFeature_(y,[d.feature],[d.geometry]);else{var b=e.getPixelFromCoordinate(g[0]),x=e.getPixelFromCoordinate(g[1]),w=Object(Wn.l)(m,b),E=Object(Wn.l)(m,x);_=Math.sqrt(Math.min(w,E)),this.snappedToVertex_=_<=this.pixelTolerance_,this.snappedToVertex_&&(y=w>E?g[1]:g[0]),this.createOrUpdateVertexFeature_(y,[d.feature],[d.geometry]);var O={};O[Object(Gn.c)(d.geometry)]=!0;for(var S=1,I=n.length;S=0;--i)u=(r=h[i])[0],c=Object(Gn.c)(u.feature),u.depth&&(c+="-"+u.depth.join("-")),c in f||(f[c]={}),0===r[1]?(f[c].right=u,f[c].index=u.index):1==r[1]&&(f[c].left=u,f[c].index=u.index+1);for(c in f){switch(l=f[c].right,a=f[c].left,(s=(o=f[c].index)-1)<0&&(s=0),t=e=(n=(u=void 0!==a?a:l).geometry).getCoordinates(),p=!1,n.getType()){case fo.a.MULTI_LINE_STRING:e[u.depth[0]].length>2&&(e[u.depth[0]].splice(o,1),p=!0);break;case fo.a.LINE_STRING:e.length>2&&(e.splice(o,1),p=!0);break;case fo.a.MULTI_POLYGON:t=t[u.depth[1]];case fo.a.POLYGON:(t=t[u.depth[0]]).length>4&&(o==t.length-1&&(o=0),t.splice(o,1),p=!0,0===o&&(t.pop(),t.push(t[0]),s=t.length-1))}if(p){this.setGeometryCoordinates_(n,e);var d=[];if(void 0!==a&&(this.rBush_.remove(a),d.push(a.segment[0])),void 0!==l&&(this.rBush_.remove(l),d.push(l.segment[1])),void 0!==a&&void 0!==l){var g={depth:u.depth,feature:u.feature,geometry:u.geometry,index:s,segment:d};this.rBush_.insert(Object(mt.c)(g.segment),g)}this.updateSegmentIndices_(n,o,u.depth,-1),this.vertexFeature_&&(this.overlay_.getSource().removeFeature(this.vertexFeature_),this.vertexFeature_=null),h.length=0}}return p},e.prototype.setGeometryCoordinates_=function(t,e){this.changingFeature_=!0,t.setCoordinates(e),this.changingFeature_=!1},e.prototype.updateSegmentIndices_=function(t,e,r,n){this.rBush_.forEachInExtent(t.getExtent(),(function(i){i.geometry===t&&(void 0===r||void 0===i.depth||Object(h.b)(i.depth,r))&&i.index>e&&(i.index+=n)}))},e}(rs),GK=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function UK(t){return t.feature?t.feature:t.element?t.element:void 0}var BK=[],zK=function(t){function e(e){var r=this,n=e||{},i=n;return i.handleDownEvent||(i.handleDownEvent=Dn.b),i.stopDown||(i.stopDown=Dn.a),(r=t.call(this,i)||this).source_=n.source?n.source:null,r.vertex_=void 0===n.vertex||n.vertex,r.edge_=void 0===n.edge||n.edge,r.features_=n.features?n.features:null,r.featuresListenerKeys_=[],r.featureChangeListenerKeys_={},r.indexedFeaturesExtents_={},r.pendingFeatures_={},r.pixelTolerance_=void 0!==n.pixelTolerance?n.pixelTolerance:10,r.rBush_=new ug,r.GEOMETRY_SEGMENTERS_={Point:r.segmentPointGemetry_.bind(r),LineString:r.segmentLineStringGemetry_.bind(r),LinearRing:r.segmentLineStringGemetry_.bind(r),Polygon:r.segmentPolygonGemetry_.bind(r),MultiPoint:r.segmentMultiPointGemetry_.bind(r),MultiLineString:r.segmentMultiLineStringGemetry_.bind(r),MultiPolygon:r.segmentMultiPolygonGemetry_.bind(r),GeometryCollection:r.segmentGeometryCollectionGemetry_.bind(r),Circle:r.segmentCircleGemetry_.bind(r)},r}return GK(e,t),e.prototype.addFeature=function(t,e){var r=void 0===e||e,n=Object(Gn.c)(t),i=t.getGeometry();if(i){var o=this.GEOMETRY_SEGMENTERS_[i.getType()];if(o){this.indexedFeaturesExtents_[n]=i.getExtent(Object(mt.k)());var a=[];if(o(a,i),1===a.length)this.rBush_.insert(Object(mt.c)(a[0]),{feature:t,segment:a[0]});else if(a.length>1){var s=a.map((function(t){return Object(mt.c)(t)})),l=a.map((function(e){return{feature:t,segment:e}}));this.rBush_.load(s,l)}}}r&&(this.featureChangeListenerKeys_[n]=Object(Ci.a)(t,Di.a.CHANGE,this.handleFeatureChange_,this))},e.prototype.forEachFeatureAdd_=function(t){this.addFeature(t)},e.prototype.forEachFeatureRemove_=function(t){this.removeFeature(t)},e.prototype.getFeatures_=function(){var t;return this.features_?t=this.features_:this.source_&&(t=this.source_.getFeatures()),t},e.prototype.handleEvent=function(e){var r=this.snapTo(e.pixel,e.coordinate,e.map);return r&&(e.coordinate=r.vertex.slice(0,2),e.pixel=r.vertexPixel),t.prototype.handleEvent.call(this,e)},e.prototype.handleFeatureAdd_=function(t){var e=UK(t);this.addFeature(e)},e.prototype.handleFeatureRemove_=function(t){var e=UK(t);this.removeFeature(e)},e.prototype.handleFeatureChange_=function(t){var e=t.target;if(this.handlingDownUpSequence){var r=Object(Gn.c)(e);r in this.pendingFeatures_||(this.pendingFeatures_[r]=e)}else this.updateFeature_(e)},e.prototype.handleUpEvent=function(t){var e=Object(ii.c)(this.pendingFeatures_);return e.length&&(e.forEach(this.updateFeature_.bind(this)),this.pendingFeatures_={}),!1},e.prototype.removeFeature=function(t,e){var r=void 0===e||e,n=Object(Gn.c)(t),i=this.indexedFeaturesExtents_[n];if(i){var o=this.rBush_,a=[];o.forEachInExtent(i,(function(e){t===e.feature&&a.push(e)}));for(var s=a.length-1;s>=0;--s)o.remove(a[s])}r&&(Object(Ci.c)(this.featureChangeListenerKeys_[n]),delete this.featureChangeListenerKeys_[n])},e.prototype.setMap=function(e){var r=this.getMap(),n=this.featuresListenerKeys_,i=this.getFeatures_();r&&(n.forEach(Ci.c),n.length=0,i.forEach(this.forEachFeatureRemove_.bind(this))),t.prototype.setMap.call(this,e),e&&(this.features_?n.push(Object(Ci.a)(this.features_,Li,this.handleFeatureAdd_,this),Object(Ci.a)(this.features_,Mi,this.handleFeatureRemove_,this)):this.source_&&n.push(Object(Ci.a)(this.source_,hg,this.handleFeatureAdd_,this),Object(Ci.a)(this.source_,dg,this.handleFeatureRemove_,this)),i.forEach(this.forEachFeatureAdd_.bind(this)))},e.prototype.snapTo=function(t,e,r){var n=r.getCoordinateFromPixel([t[0]-this.pixelTolerance_,t[1]+this.pixelTolerance_]),i=r.getCoordinateFromPixel([t[0]+this.pixelTolerance_,t[1]-this.pixelTolerance_]),o=Object(mt.c)([n,i]),a=this.rBush_.getInExtent(o),s=a.length;if(0===s)return null;var l,c=r.getView().getProjection(),h=Object(u.l)(e,c),f=1/0,p=this.pixelTolerance_*this.pixelTolerance_,d=function(){if(l){var e=r.getPixelFromCoordinate(l);if(Object(Wn.l)(t,e)<=p)return{vertex:l,vertexPixel:[Math.round(e[0]),Math.round(e[1])]}}return null};if(this.vertex_){for(var g=0;g0&&y.length>0;)o=y.pop(),c=d.pop(),f=g.pop(),(l=o.toString())in m||(u.push(f[0],f[1]),m[l]=!0),a=y.pop(),h=d.pop(),p=g.pop(),i=e(n=t(s=(o+a)/2)),Object(mo.k)(i[0],i[1],f[0],f[1],p[0],p[1])this.featurePool_.length;)l=new Wc,this.featurePool_.push(l);var h=n.getFeaturesCollection();h.clear();var f,p,d=0;for(f=0,p=this.meridians_.length;fMath.PI/2);for(var d=wy(t),g=u;g<=c;++g){var y=this.meridians_.length+this.parallels_.length,m=void 0,_=void 0,v=void 0,b=void 0;if(this.meridiansLabels_)for(_=0,v=this.meridiansLabels_.length;_=s?(t[0]=a[0],t[2]=a[2]):o=!0);var l=[Object(mo.b)(e[0],this.minX_,this.maxX_),Object(mo.b)(e[1],this.minY_,this.maxY_)],u=this.toLonLatTransform_(l);isNaN(u[1])&&(u[1]=Math.abs(this.maxLat_)>=Math.abs(this.minLat_)?this.maxLat_:this.minLat_);var c,h,f,p,d=Object(mo.b)(u[0],this.minLon_,this.maxLon_),g=Object(mo.b)(u[1],this.minLat_,this.maxLat_),y=this.maxLines_,m=t;o||(m=[Object(mo.b)(t[0],this.minX_,this.maxX_),Object(mo.b)(t[1],this.minY_,this.maxY_),Object(mo.b)(t[2],this.minX_,this.maxX_),Object(mo.b)(t[3],this.minY_,this.maxY_)]);var _=Object(mt.a)(m,this.toLonLatTransform_,void 0,8),v=_[3],b=_[2],x=_[1],w=_[0];if(o||(Object(mt.g)(m,this.bottomLeft_)&&(w=this.minLon_,x=this.minLat_),Object(mt.g)(m,this.bottomRight_)&&(b=this.maxLon_,x=this.minLat_),Object(mt.g)(m,this.topLeft_)&&(w=this.minLon_,v=this.maxLat_),Object(mt.g)(m,this.topRight_)&&(b=this.maxLon_,v=this.maxLat_),v=Object(mo.b)(v,g,this.maxLat_),b=Object(mo.b)(b,d,this.maxLon_),x=Object(mo.b)(x,this.minLat_,g),w=Object(mo.b)(w,this.minLon_,d)),d=Math.floor(d/i)*i,p=Object(mo.b)(d,this.minLon_,this.maxLon_),h=this.addMeridian_(p,x,v,n,t,0),c=0,o)for(;(p-=i)>=w&&c++n[o]&&(i=o,o=1);var a=Math.max(e[1],n[i]),s=Math.min(e[3],n[o]),l=Object(mo.b)(e[1]+Math.abs(e[1]-e[3])*this.lonLabelPosition_,a,s),u=[n[i-1]+(n[o-1]-n[i-1])*(l-n[i])/(n[o]-n[i]),l],c=this.meridiansLabels_[r].geom;return c.setCoordinates(u),c},e.prototype.getMeridians=function(){return this.meridians_},e.prototype.getParallel_=function(t,e,r,n,i){var o=function(t,e,r,n,i){var o=Object(u.o)("EPSG:4326");return JK((function(n){return[e+(r-e)*n,t]}),Object(u.q)(o,n),i)}(t,e,r,this.projection_,n),a=this.parallels_[i];return a?(a.setFlatCoordinates(Io,o),a.changed()):a=new Qc(o,Io),a},e.prototype.getParallelPoint_=function(t,e,r){var n=t.getFlatCoordinates(),i=0,o=n.length-2;n[i]>n[o]&&(i=o,o=0);var a=Math.max(e[0],n[i]),s=Math.min(e[2],n[o]),l=Object(mo.b)(e[0]+Math.abs(e[0]-e[2])*this.latLabelPosition_,a,s),u=[l,n[i+1]+(n[o+1]-n[i+1])*(l-n[i])/(n[o]-n[i])],c=this.parallelsLabels_[r].geom;return c.setCoordinates(u),c},e.prototype.getParallels=function(){return this.parallels_},e.prototype.updateProjectionInfo_=function(t){var e=Object(u.o)("EPSG:4326"),r=t.getWorldExtent();this.maxLat_=r[3],this.maxLon_=r[2],this.minLat_=r[1],this.minLon_=r[0];var n=Object(u.q)(t,e);if(this.minLon_=Math.abs(this.minLat_)?this.maxLat_:this.minLat_),this.projection_=t},e}(jv),rJ=r(65),nJ=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),iJ=function(t){function e(e){var r=this,n=void 0===e.imageSmoothing||e.imageSmoothing;if(void 0!==e.interpolate&&(n=e.interpolate),(r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,interpolate:n,projection:Object(u.o)("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:Qn.a.LOADING,tileLoadFunction:e.tileLoadFunction,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition,zDirection:e.zDirection})||this).tileJSON_=null,r.tileSize_=e.tileSize,e.url)if(e.jsonp)Object(rJ.a)(e.url,r.handleTileJSONResponse.bind(r),r.handleTileJSONError.bind(r));else{var i=new XMLHttpRequest;i.addEventListener("load",r.onXHRLoad_.bind(r)),i.addEventListener("error",r.onXHRError_.bind(r)),i.open("GET",e.url),i.send()}else e.tileJSON?r.handleTileJSONResponse(e.tileJSON):Object(Ui.a)(!1,51);return r}return nJ(e,t),e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(r)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTileJSON=function(){return this.tileJSON_},e.prototype.handleTileJSONResponse=function(t){var e,r=Object(u.o)("EPSG:4326"),n=this.getProjection();if(void 0!==t.bounds){var i=Object(u.r)(r,n);e=Object(mt.a)(t.bounds,i)}var o=Object(Ff.c)(n),a=t.minzoom||0,s=t.maxzoom||22,l=Object(Ff.b)({extent:o,maxZoom:s,minZoom:a,tileSize:this.tileSize_});if(this.tileGrid=l,this.tileUrlFunction=Rf(t.tiles,l),void 0!==t.attribution&&!this.getAttributions()){var c=void 0!==e?e:o;this.setAttributions((function(e){return Object(mt.G)(c,e.extent)?[t.attribution]:null}))}this.tileJSON_=t,this.setState(Qn.a.READY)},e.prototype.handleTileJSONError=function(){this.setState(Qn.a.ERROR)},e}(Uf),oJ=r(80),aJ=r.n(oJ),sJ=r(53),lJ="function"==typeof Object.assign?Object.assign:function(t,e){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var r=Object(t),n=1,i=arguments.length;n=.05){for(var r="",n=t.split("\n"),i=pJ.slice(0,Math.round(e/.1)),o=0,a=n.length;o0&&(r+="\n"),r+=n[o].split("").join(i);return r}return t}function gJ(){return fJ||(fJ=hJ(1,1).getContext("2d")),fJ}function yJ(t,e){return gJ().measureText(t).width+(t.length-1)*e}var mJ={};function _J(t,e,r,n){if(-1!==t.indexOf("\n")){for(var i=t.split("\n"),o=[],a=0,s=i.length;a1){var h=gJ();h.font=e;var f=h.measureText("M").width*r,p="";for(o=[],a=0,s=c.length;a1;++a){var y=o[a];if(yJ(y,n)<.35*f){var m=a>0?yJ(o[a-1],n):1/0,_=a.7*f&&yJ(b,n)<.6*f){var x=v.split(" "),w=x.pop();yJ(w,n)<.2*f&&(o[a]=x.join(" "),o[a+1]=w+" "+b),s-=1}}u=o.join("\n")}else u=t;u=dJ(u,n),mJ[l]=u}return u}function vJ(t){return(vJ="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}yi&&Object(Ci.a)(yi,Di.a.CLEAR,(function(){mJ={}}));var bJ,xJ,wJ=sJ.e.isFunction,EJ=sJ.e.convertFunction,OJ=sJ.c.isExpression,SJ=sJ.c.createPropertyExpression,IJ={Point:1,MultiPoint:1,LineString:2,MultiLineString:2,Polygon:3,MultiPolygon:3},CJ={center:[.5,.5],left:[0,.5],right:[1,.5],top:[.5,0],bottom:[.5,1],"top-left":[0,0],"top-right":[1,0],"bottom-left":[0,1],"bottom-right":[1,1]},TJ={},PJ={zoom:0};function RJ(t,e,r,n,i,o){var a=t.id;o||(o={},console.warn("No functionCache provided to getValue()")),o[a]||(o[a]={});var s=o[a];if(!s[r]){var l=(t[e]||TJ)[r],u=sJ.f["".concat(e,"_").concat(t.type)][r];void 0===l&&(l=u.default);var c=OJ(l);if(!c&&wJ(l)&&(l=EJ(l,u),c=!0),c){var h=function(t,e){var r=SJ(t,e);if("error"===r.result)throw new Error(r.value.map((function(t){return"".concat(t.key,": ").concat(t.message)})).join(", "));return r.value}(l,u);s[r]=h.evaluate.bind(h)}else"color"==u.type&&(l=sJ.a.parse(l)),s[r]=function(){return l}}return PJ.zoom=n,s[r](PJ,i)}var LJ=!1;function MJ(t,e){if(t){if(!LJ&&(0===t.a||0===e))return;var r=t.a;return e=void 0===e?1:e,0===r?"transparent":"rgba("+Math.round(255*t.r/r)+","+Math.round(255*t.g/r)+","+Math.round(255*t.b/r)+","+r*e+")"}return t}var NJ=/^([^]*)\{(.*)\}([^]*)$/;function AJ(t,e){var r;do{if(r=t.match(NJ)){var n=e[r[2]]||"";t=r[1]+n+r[3]}}while(r);return t}var kJ=!1;var jJ=function(t,e,r,n,i,o,a){if(void 0===n&&(n=cJ),"string"==typeof e&&(e=JSON.parse(e)),8!=e.version)throw new Error("glStyle version 8 required.");var s,l;if(o)if("undefined"!=typeof Image){var u=new Image;u.crossOrigin="anonymous",u.onload=function(){s=u,l=[u.width,u.height],t.changed(),u.onload=null},u.src=o}else if("undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope){var c=self;c.postMessage({action:"loadImage",src:o}),c.addEventListener("message",(function(t){"imageLoaded"===t.data.action&&t.data.src===o&&(s=t.data.image,l=[s.width,s.height])}))}for(var h,f=Object(sJ.b)(e.layers),p={},d=[],g={},y={},m={},_={},v=0,b=f.length;v=b.maxzoom)return"continue";var O=b.filter;if(!O||function(t,e,r,n,i){return i||console.warn("No filterCache provided to evaluateFilter()"),t in i||(i[t]=Object(sJ.d)(e).filter),PJ.zoom=n,i[t](PJ,r)}(x,O,f,u,_)){c=b;var S=void 0,I=void 0,R=void 0,L=void 0,M=void 0,N=void 0,A=v.index;if(3==h&&("fill"==b.type||"fill-extrusion"==b.type))if(I=RJ(b,"paint",b.type+"-opacity",u,f,m),b.type+"-pattern"in E){var k=RJ(b,"paint",b.type+"-pattern",u,f,m);if(k){var j="string"==typeof k?AJ(k,r):k.toString();if(s&&i&&i[j]){++d,(N=P[d])&&N.getFill()&&!N.getStroke()&&!N.getText()||(N=new $y({fill:new zg}),P[d]=N),R=N.getFill(),N.setZIndex(A);var F=y[dt=j+"."+I];if(!F){var D=i[j],G=hJ(D.width,D.height),U=G.getContext("2d");U.globalAlpha=I,U.drawImage(s,D.x,D.y,D.width,D.height,0,0,D.width,D.height),F=U.createPattern(G,"repeat"),y[dt]=F}R.setColor(F)}}}else S=MJ(RJ(b,"paint",b.type+"-color",u,f,m),I),b.type+"-outline-color"in E&&(M=MJ(RJ(b,"paint",b.type+"-outline-color",u,f,m),I)),M||(M=S),(S||M)&&(++d,(!(N=P[d])||S&&!N.getFill()||!S&&N.getFill()||M&&!N.getStroke()||!M&&N.getStroke()||N.getText())&&(N=new $y({fill:S?new zg:void 0,stroke:M?new Bg:void 0}),P[d]=N),S&&(R=N.getFill()).setColor(S),M&&((L=N.getStroke()).setColor(M),L.setWidth(.5)),N.setZIndex(A));if(1!=h&&"line"==b.type){S=!("line-pattern"in E)&&"line-color"in E?MJ(RJ(b,"paint","line-color",u,f,m),RJ(b,"paint","line-opacity",u,f,m)):void 0;var B=RJ(b,"paint","line-width",u,f,m);S&&B>0&&(++d,(N=P[d])&&N.getStroke()&&!N.getFill()&&!N.getText()||(N=new $y({stroke:new Bg}),P[d]=N),(L=N.getStroke()).setLineCap(RJ(b,"layout","line-cap",u,f,m)),L.setLineJoin(RJ(b,"layout","line-join",u,f,m)),L.setMiterLimit(RJ(b,"layout","line-miter-limit",u,f,m)),L.setColor(S),L.setWidth(B),L.setLineDash(E["line-dasharray"]?RJ(b,"paint","line-dasharray",u,f,m).map((function(t){return t*B})):null),N.setZIndex(A))}var z=!1,V=null,q=0,Y=void 0,W=void 0,X=void 0;if((1==h||2==h)&&"icon-image"in w){var H=RJ(b,"layout","icon-image",u,f,m);if(H){Y="string"==typeof H?AJ(H,r):H.toString();var Z=void 0;if(s&&i&&i[Y]){var K=RJ(b,"layout","icon-rotation-alignment",u,f,m);if(2==h){var J=t.getGeometry();if(J.getFlatMidpoint||J.getFlatMidpoints){var $=J.getExtent();if(Math.sqrt(Math.max(Math.pow(($[2]-$[0])/e,2),Math.pow(($[3]-$[1])/e,2)))>150){var Q="MultiLineString"===J.getType()?J.getFlatMidpoints():J.getFlatMidpoint();if(xJ||(xJ=new lh("Point",bJ=[NaN,NaN],[],{},null)),Z=xJ,bJ[0]=Q[0],bJ[1]=Q[1],"line"===(Mt=RJ(b,"layout","symbol-placement",u,f,m))&&"map"===K)for(var tt=J.getStride(),et=J.getFlatCoordinates(),rt=0,nt=et.length-tt;rt=lt&&Q[0]<=ct&&Q[1]>=ut&&Q[1]<=ht){q=Math.atan2(ot-st,at-it);break}}}}}if(2!==h||Z){var ft=RJ(b,"layout","icon-size",u,f,m),pt=void 0!==E["icon-color"]?RJ(b,"paint","icon-color",u,f,m):null;if(!pt||0!==pt.a){var dt=Y+"."+ft;if(null!==pt&&(dt+="."+pt),!(W=g[dt])){var gt=i[Y];W=new iy({color:pt?[255*pt.r,255*pt.g,255*pt.b,pt.a]:void 0,img:s,imgSize:l,size:[gt.width,gt.height],offset:[gt.x,gt.y],rotateWithView:"map"===K,scale:ft/gt.pixelRatio,displacement:"icon-offset"in w?RJ(b,"layout","icon-offset",u,f,m).map((function(t){return-t*gt.pixelRatio})):void 0}),g[dt]=W}}W&&(++d,(N=P[d])&&N.getImage()&&!N.getFill()&&!N.getStroke()||(N=new $y,P[d]=N),N.setGeometry(Z),W.setRotation(q+uJ(RJ(b,"layout","icon-rotate",u,f,m))),W.setOpacity(RJ(b,"paint","icon-opacity",u,f,m)),W.setAnchor(CJ[RJ(b,"layout","icon-anchor",u,f,m)]),N.setImage(W),V=N.getText(),N.setText(void 0),N.setZIndex(A),z=!0,X=!1)}else X=!0}}}if(1==h&&"circle"===b.type){++d,(N=P[d])&&N.getImage()&&!N.getFill()&&!N.getStroke()||(N=new $y,P[d]=N);var yt="circle-radius"in E?RJ(b,"paint","circle-radius",u,f,m):5,mt=MJ(RJ(b,"paint","circle-stroke-color",u,f,m),RJ(b,"paint","circle-stroke-opacity",u,f,m)),_t=MJ(RJ(b,"paint","circle-color",u,f,m),RJ(b,"paint","circle-opacity",u,f,m)),vt=RJ(b,"paint","circle-stroke-width",u,f,m),bt=yt+"."+mt+"."+_t+"."+vt;(W=g[bt])||(W=new Yy({radius:yt,stroke:mt&&vt>0?new Bg({width:vt,color:mt}):void 0,fill:_t?new zg({color:_t}):void 0}),g[bt]=W),N.setImage(W),V=N.getText(),N.setText(void 0),N.setGeometry(void 0),N.setZIndex(A),z=!0}var xt,wt,Et,Ot,St=void 0,It=void 0;if("text-field"in w){wt=Math.round(RJ(b,"layout","text-size",u,f,m));var Ct=RJ(b,"layout","text-font",u,f,m);xt=RJ(b,"layout","text-line-height",u,f,m),It=aJ()(a?a(Ct):Ct,wt,xt),Et=RJ(b,"layout","text-letter-spacing",u,f,m),Ot=RJ(b,"layout","text-max-width",u,f,m);var Tt=RJ(b,"layout","text-field",u,f,m);St="object"===vJ(Tt)&&Tt.sections?1===Tt.sections.length?Tt.toString():Tt.sections.reduce((function(t,e,r){var n=e.fontStack?e.fontStack.split(","):Ct,i=aJ()(a?a(n):n,wt*(e.scale||1),xt),o=e.text;if("\n"===o)return t.push("\n",""),t;if(2!=h){for(var s=0,l=(o=_J(o,i,Ot,Et).split("\n")).length;s0&&t.push("\n",""),t.push(o[s],i);return t}t.push(dJ(o,Et),i)}),[]):AJ(Tt,r).trim(),I=RJ(b,"paint","text-opacity",u,f,m)}if(St&&I&&!X){z||(++d,(N=P[d])&&N.getText()&&!N.getFill()&&!N.getStroke()||(N=new $y,P[d]=N),N.setImage(void 0),N.setGeometry(void 0)),N.getText()||N.setText(V||new Yg({padding:[2,2,2,2]})),V=N.getText();var Pt=w["text-transform"];"uppercase"==Pt?St=Array.isArray(St)?St.map((function(t,e){return e%2?t:t.toUpperCase()})):St.toUpperCase():"lowercase"==Pt&&(St=Array.isArray(St)?St.map((function(t,e){return e%2?t:t.toLowerCase()})):St.toLowerCase());var Rt=Array.isArray(St)?St:2==h?dJ(St,Et):_J(St,It,Ot,Et);V.setText(Rt),V.setFont(It),V.setRotation(uJ(RJ(b,"layout","text-rotate",u,f,m)));var Lt=RJ(b,"layout","text-anchor",u,f,m),Mt=z||1==h?"point":RJ(b,"layout","symbol-placement",u,f,m);V.setPlacement(Mt),V.setOverflow("point"===Mt);var Nt=RJ(b,"paint","text-halo-width",u,f,m),At=RJ(b,"layout","text-offset",u,f,m),kt=RJ(b,"paint","text-translate",u,f,m),jt=0,Ft=0;if("point"==Mt){var Dt="center";-1!==Lt.indexOf("left")?(Dt="left",Ft=Nt):-1!==Lt.indexOf("right")&&(Dt="right",Ft=-Nt),V.setTextAlign(Dt);var Gt=RJ(b,"layout","text-rotation-alignment",u,f,m);V.setRotateWithView("map"==Gt)}else V.setMaxAngle(uJ(RJ(b,"layout","text-max-angle",u,f,m))*St.length/Rt.length),V.setTextAlign(),V.setRotateWithView(!1);var Ut="middle";0==Lt.indexOf("bottom")?(Ut="bottom",jt=-Nt-.5*(xt-1)*wt):0==Lt.indexOf("top")&&(Ut="top",jt=Nt+.5*(xt-1)*wt),V.setTextBaseline(Ut),V.setOffsetX(At[0]*wt+Ft+kt[0]),V.setOffsetY(At[1]*wt+jt+kt[1]),T.setColor(MJ(RJ(b,"paint","text-color",u,f,m),I)),V.setFill(T);var Bt=MJ(RJ(b,"paint","text-halo-color",u,f,m),I);if(Bt){C.setColor(Bt),Nt*=2;var zt=.5*wt;C.setWidth(Nt<=zt?Nt:zt),V.setStroke(C)}else V.setStroke(void 0);var Vt=RJ(b,"layout","text-padding",u,f,m),qt=V.getPadding();Vt!==qt[0]&&(qt[0]=Vt,qt[1]=Vt,qt[2]=Vt,qt[3]=Vt),N.setZIndex(A)}}},b=0,x=o.length;b-1?(P.length=d+1,kJ&&("function"==typeof t.set?t.set("mapbox-layer",c):t.getProperties()["mapbox-layer"]=c),P):void 0}};return t.setStyle(R),t.set("mapbox-source",h),t.set("mapbox-layers",d),R},FJ=r(118);function DJ(t){return(DJ="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var GJ,UJ={},BJ=/font-family: ?([^;]*);/,zJ=/("|')/g;function VJ(t){if(!GJ){GJ={};for(var e=document.styleSheets,r=0,n=e.length;r2?n[2]:""):t+r}function KJ(t,e,r,n,i){return new Promise((function(o,a){if("object"!=DJ(e)&&(e=JSON.parse(e)),8!=e.version)return a(new Error("glStyle version 8 required."));if(!(t instanceof jv||t instanceof Dj))return a(new Error("Can only apply to VectorLayer or VectorTileLayer"));var s,l,u;function c(){u||e.sprite&&!s?u?(t.setStyle(u),o()):a(new Error("Something went wrong trying to apply style.")):(u=jJ(t,e,r,i,s,l,WJ),t.getStyle()?o():a(new Error("Nothing to show for source [".concat(r,"]"))))}if(e.sprite){var h=.5==(window.devicePixelRatio>=1.5?.5:1)?"@2x":"",f=ZJ(e.sprite,n,h+".json");fetch(f,{credentials:"same-origin"}).then((function(t){return t.ok||""===h?t:(f=ZJ(e.sprite,n,".json"),fetch(f,{credentials:"same-origin"}))})).then((function(t){if(t.ok)return t.json();a(new Error("Problem fetching sprite from ".concat(f,": ").concat(t.statusText)))})).then((function(t){if(void 0===t)return a(new Error("No sprites found."));s=t,l=ZJ(e.sprite,n,h+".png"),c()})).catch((function(t){a(new Error("Sprites cannot be loaded: ".concat(f,": ").concat(t.message)))}))}else c()}))}var JJ={};function $J(t,e){var r={id:e.id,type:e.type},n={};function i(i){var o=e.layout||{},a=e.paint||{};r.paint=a;var s,l,u="function"==typeof t.getSource?t.getSource().getTileGrid().getZForResolution(i):t.getView().getZoom(),c="function"==typeof t.getTargetElement?t.getTargetElement():void 0;if(void 0!==a["background-color"]&&(s=RJ(r,"paint","background-color",u,JJ,n),c&&(c.style.background=sJ.a.parse(s).toString())),void 0!==a["background-opacity"]&&(l=RJ(r,"paint","background-opacity",u,JJ,n),c&&(c.style.opacity=l)),"none"!=o.visibility)return MJ(s,l);c&&(c.style.backgroundColor="",c.style.opacity="")}if("function"==typeof t.getTargetElement)t.getTargetElement()&&i(),t.on(["change:resolution","change:target"],i);else{if("function"!=typeof t.setBackground)throw new Error("Unable to apply background.");t.setBackground(i)}}function QJ(t){var e=t.bounds;if(e){var r=Object(u.k)([e[0],e[1]]),n=Object(u.k)([e[2],e[3]]);return[r[0],r[1],n[0],n[1]]}}function t$(t,e){t=lJ({},t);var r=[e,JSON.stringify(t)].toString(),n=UJ[r];return n||(n=new iJ({url:t.tiles?void 0:e,tileJSON:t.tiles?t:void 0}),UJ[r]=n),new Promise((function(t){var r=n.on("change",(function(){var i=n.getState();if("ready"===i){var o=n.getTileJSON(),a=Array.isArray(o.tiles)?o.tiles:[o.tiles];if(e)for(var s=0,l=a.length;s=p;--d)for(var g=s.getTileRangeForExtentAndZ(e,d,this.tempTileRange_),y=s.getResolution(d),m=g.minX;m<=g.maxX;++m)for(var _=g.minY;_<=g.maxY;++_){var v=Object(Tf.a)(d,m,_,this.tempTileCoord_),b=V$(a,v),x=void 0,w=void 0;if(f.containsKey(b)&&(w=(x=f.get(b)).tile),!x||x.tile.key!==a.getKey())if(w=a.getTile(d,m,_,t.pixelRatio,i.projection),x)if(this.isDrawableTile_(w))x.setTile(w);else{var E=w.getInterimTile();x.setTile(E)}else x=new E$({tile:w,grid:s,helper:this.helper,tilePixelRatio:l,gutter:u}),f.set(b,x);B$(n,x,d);var O=w.getKey();h[O]=!0,w.getState()===Ef.a.IDLE&&(t.tileQueue.isKeyQueued(O)||t.tileQueue.enqueue([w,c,s.getTileCoordCenter(v),y]))}},e.prototype.renderFrame=function(t){this.frameState_=t,this.renderComplete=!0;var e=this.helper.getGL();this.preRender(e,t);var r=t.viewState,n=this.getLayer().getRenderSource(),i=n.getTileGridForProjection(r.projection),o=z$(t,t.extent),a=i.getZForResolution(r.resolution,n.zDirection),s={};if(t.nextExtent){var l=i.getZForResolution(r.nextResolution,n.zDirection),u=z$(t,t.nextExtent);this.enqueueTiles(t,u,l,s)}this.enqueueTiles(t,o,a,s);for(var c={},f=Object(Gn.c)(this),p=t.time,d=!1,g=s[a],y=0,m=g.length;y=v;--b){if(this.findAltTiles_(i,_,b,s))break}}this.helper.useProgram(this.program_),this.helper.prepareDraw(t,!d);for(var x=Object.keys(s).map(Number).sort(h.i),w=r.center[0],E=r.center[1],O=0,S=x.length;O=s.getMinZoom();--h){var f=s.getTileCoordForCoordAndZ(n,h),p=V$(a,f);if(c.containsKey(p)){var d=c.get(p);if(d.loaded){var g=s.getOrigin(h),y=Object(Aa.d)(s.getTileSize(h)),m=s.getResolution(h),_=(n[0]-g[0])/m-f[1]*y[0],v=(g[1]-n[1])/m-f[2]*y[1];return d.getPixelData(_,v)}}}return null},e.prototype.findAltTiles_=function(t,e,r,n){var i=t.getTileRangeForTileCoordAndZ(e,r,this.tempTileRange_);if(!i)return!1;for(var o=!0,a=this.tileTextureCache_,s=this.getLayer().getRenderSource(),l=i.minX;l<=i.maxX;++l)for(var u=i.minY;u<=i.maxY;++u){var c=V$(s,[r,l,u]),h=!1;if(a.containsKey(c)){var f=a.get(c);f.loaded&&(B$(n,f,r),h=!0)}h||(o=!1)}return o},e.prototype.removeHelper=function(){if(this.helper){var e=this.tileTextureCache_;e.forEach((function(t){return t.dispose()})),e.clear()}t.prototype.removeHelper.call(this)},e.prototype.disposeInternal=function(){var e=this.helper;e&&(e.getGL().deleteProgram(this.program_),delete this.program_,e.deleteBuffer(this.indices_));t.prototype.disposeInternal.call(this),delete this.indices_,delete this.tileTextureCache_,delete this.frameState_},e}(bB),Y$=function(){function t(t,e){this.name=t,this.data=e,this.texture_=null}return t.prototype.getTexture=function(t){if(!this.texture_){var e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.NEAREST),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,this.data.length/4,1,0,t.RGBA,t.UNSIGNED_BYTE,this.data),this.texture_=e}return this.texture_},t}(),W$=1,X$=2,H$=4,Z$=8,K$=16,J$=31,$$=0,Q$={};function tQ(t){if("number"==typeof t)return W$;if("boolean"==typeof t)return Z$;if("string"==typeof t)return Object(Bn.d)(t)?H$|X$:X$;if(!Array.isArray(t))throw new Error("Unhandled value type: ".concat(JSON.stringify(t)));var e=t;if(e.every((function(t){return"number"==typeof t})))return 3===e.length||4===e.length?H$|K$:K$;if("string"!=typeof e[0])throw new Error("Expected an expression operator but received: ".concat(JSON.stringify(e)));var r=Q$[e[0]];if(void 0===r)throw new Error("Unrecognized expression operator: ".concat(JSON.stringify(e)));return r.getReturnType(e.slice(1))}function eQ(t){var e=t.toString();return-1===e.indexOf(".")?e+".0":e}function rQ(t){if(t.length<2||t.length>4)throw new Error("`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.");return"vec".concat(t.length,"(").concat(t.map(eQ).join(", "),")")}function nQ(t,e){return void 0===t.stringLiteralsMap[e]&&(t.stringLiteralsMap[e]=Object.keys(t.stringLiteralsMap).length),t.stringLiteralsMap[e]}function iQ(t,e,r){if(Array.isArray(e)&&"string"==typeof e[0]){var n=Q$[e[0]];if(void 0===n)throw new Error("Unrecognized expression operator: ".concat(JSON.stringify(e)));return n.toGlsl(t,e.slice(1),r)}var i,o,a=tQ(e);if((a&W$)>0)return eQ(e);if((a&Z$)>0)return e.toString();if((a&X$)>0&&(void 0===r||r==X$))return function(t,e){return eQ(nQ(t,e))}(t,e.toString());if((a&H$)>0&&(void 0===r||r==H$))return i=e,(o=Object(Bn.a)(i).slice()).length<4&&o.push(1),rQ(o.map((function(t,e){return e<3?t/255:t})));if((a&K$)>0)return rQ(e);throw new Error("Unexpected expression ".concat(e," (expected type ").concat(r,")"))}function oQ(t){if(!(tQ(t)&W$))throw new Error("A numeric value was expected, got ".concat(JSON.stringify(t)," instead"))}function aQ(t){for(var e=0;ee)throw new Error("At most ".concat(e," arguments were expected, got ").concat(t.length," instead"))}function fQ(t){if(t.length%2!=0)throw new Error("An even amount of arguments was expected, got ".concat(t," instead"))}function pQ(t,e){if(r=e,Object(mo.f)(r)%1!=0)throw new Error("Could not infer only one type from the following expression: ".concat(JSON.stringify(t)));var r}function dQ(t){return"u_var_"+t}Q$.get={getReturnType:function(t){return J$},toGlsl:function(t,e){uQ(e,1),sQ(e[0]);var r=e[0].toString();return-1===t.attributes.indexOf(r)&&t.attributes.push(r),(t.inFragmentShader?"v_":"a_")+r}},Q$.var={getReturnType:function(t){return J$},toGlsl:function(t,e){uQ(e,1),sQ(e[0]);var r=e[0].toString();return-1===t.variables.indexOf(r)&&t.variables.push(r),dQ(r)}};var gQ="u_paletteTextures";Q$.palette={getReturnType:function(t){return H$},toGlsl:function(t,e){uQ(e,2),oQ(e[0]);var r=iQ(t,e[0]),n=e[1];if(!Array.isArray(n))throw new Error("The second argument of palette must be an array");for(var i=n.length,o=new Uint8Array(4*i),a=0;a"]={getReturnType:function(t){return Z$},toGlsl:function(t,e){return uQ(e,2),aQ(e),"(".concat(iQ(t,e[0])," > ").concat(iQ(t,e[1]),")")}},Q$[">="]={getReturnType:function(t){return Z$},toGlsl:function(t,e){return uQ(e,2),aQ(e),"(".concat(iQ(t,e[0])," >= ").concat(iQ(t,e[1]),")")}},Q$["<"]={getReturnType:function(t){return Z$},toGlsl:function(t,e){return uQ(e,2),aQ(e),"(".concat(iQ(t,e[0])," < ").concat(iQ(t,e[1]),")")}},Q$["<="]={getReturnType:function(t){return Z$},toGlsl:function(t,e){return uQ(e,2),aQ(e),"(".concat(iQ(t,e[0])," <= ").concat(iQ(t,e[1]),")")}},Q$["=="]=mQ("=="),Q$["!="]=mQ("!="),Q$["!"]={getReturnType:function(t){return Z$},toGlsl:function(t,e){return uQ(e,1),lQ(e[0]),"(!".concat(iQ(t,e[0]),")")}},Q$.all=_Q("&&"),Q$.any=_Q("||"),Q$.between={getReturnType:function(t){return Z$},toGlsl:function(t,e){uQ(e,3),aQ(e);var r=iQ(t,e[1]),n=iQ(t,e[2]),i=iQ(t,e[0]);return"(".concat(i," >= ").concat(r," && ").concat(i," <= ").concat(n,")")}},Q$.array={getReturnType:function(t){return K$},toGlsl:function(t,e){cQ(e,2),hQ(e,4),aQ(e);var r=e.map((function(e){return iQ(t,e,W$)}));return"vec".concat(e.length,"(").concat(r.join(", "),")")}},Q$.color={getReturnType:function(t){return H$},toGlsl:function(t,e){cQ(e,3),hQ(e,4),aQ(e);var r=e;3===e.length&&r.push(1);var n=e.map((function(e,r){return iQ(t,e,W$)+(r<3?" / 255.0":"")}));return"vec".concat(e.length,"(").concat(n.join(", "),")")}},Q$.interpolate={getReturnType:function(t){for(var e=H$|W$,r=3;r=1;l-=2){var u=iQ(t,e[l]),c=iQ(t,e[l+1],i);s="(".concat(o," == ").concat(u," ? ").concat(c," : ").concat(s||a,")")}return s}},Q$.case={getReturnType:function(t){for(var e=J$,r=1;r=0;o-=2){var l=iQ(t,e[o]),u=iQ(t,e[o+1],i);s="(".concat(l," ? ").concat(u," : ").concat(s||a,")")}return s}};var vQ=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();function bQ(t,e){var r="\n attribute vec2 ".concat(F$,";\n uniform mat4 ").concat(I$,";\n uniform float ").concat(P$,";\n uniform float ").concat(R$,";\n uniform float ").concat(L$,";\n uniform float ").concat(M$,";\n uniform float ").concat(N$,";\n uniform float ").concat(T$,";\n\n varying vec2 v_textureCoord;\n varying vec2 v_mapCoord;\n\n void main() {\n v_textureCoord = ").concat(F$,";\n v_mapCoord = vec2(\n ").concat(M$," + ").concat(L$," * ").concat(P$," * v_textureCoord[0],\n ").concat(N$," - ").concat(L$," * ").concat(R$," * v_textureCoord[1]\n );\n gl_Position = ").concat(I$," * vec4(").concat(F$,", ").concat(T$,", 1.0);\n }\n "),n={inFragmentShader:!0,variables:[],attributes:[],stringLiteralsMap:{},functions:{},bandCount:e},i=[];if(void 0!==t.color){var o=iQ(n,t.color,H$);i.push("color = ".concat(o,";"))}if(void 0!==t.contrast){var a=iQ(n,t.contrast,W$);i.push("color.rgb = clamp((".concat(a," + 1.0) * color.rgb - (").concat(a," / 2.0), vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}if(void 0!==t.exposure){var s=iQ(n,t.exposure,W$);i.push("color.rgb = clamp((".concat(s," + 1.0) * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}if(void 0!==t.saturation){var l=iQ(n,t.saturation,W$);i.push("\n float saturation = ".concat(l," + 1.0;\n float sr = (1.0 - saturation) * 0.2126;\n float sg = (1.0 - saturation) * 0.7152;\n float sb = (1.0 - saturation) * 0.0722;\n mat3 saturationMatrix = mat3(\n sr + saturation, sr, sr,\n sg, sg + saturation, sg,\n sb, sb, sb + saturation\n );\n color.rgb = clamp(saturationMatrix * color.rgb, vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));\n "))}if(void 0!==t.gamma){var u=iQ(n,t.gamma,W$);i.push("color.rgb = pow(color.rgb, vec3(1.0 / ".concat(u,"));"))}if(void 0!==t.brightness){var c=iQ(n,t.brightness,W$);i.push("color.rgb = clamp(color.rgb + ".concat(c,", vec3(0.0, 0.0, 0.0), vec3(1.0, 1.0, 1.0));"))}var h={},f=n.variables.length;if(f>1&&!t.variables)throw new Error("Missing variables in style (expected ".concat(n.variables,")"));for(var p=function(e){var r=n.variables[e];if(!(r in t.variables))throw new Error("Missing '".concat(r,"' in style variables"));var i=dQ(r);h[i]=function(){var e=t.variables[r];return"string"==typeof e&&(e=nQ(n,e)),void 0!==e?e:-9999999}},d=0;d ").concat(A$,"[2] ||\n v_mapCoord[1] > ").concat(A$,"[3]\n ) {\n discard;\n }\n\n vec4 color = texture2D(").concat(S$,"[0], v_textureCoord);\n\n ").concat(i.join("\n"),"\n\n if (color.a == 0.0) {\n discard;\n }\n\n gl_FragColor = color;\n gl_FragColor.rgb *= gl_FragColor.a;\n gl_FragColor *= ").concat(C$,";\n }"),uniforms:h,paletteTextures:n.paletteTextures}}var xQ=function(t){function e(e){var r=this,n=e?Object(ii.a)({},e):{},i=n.style||{};delete n.style;var o=n.cacheSize;return delete n.cacheSize,(r=t.call(this,n)||this).sources_=n.sources,r.renderedSource_=null,r.renderedResolution_=NaN,r.style_=i,r.cacheSize_=o,r.styleVariables_=r.style_.variables||{},r.addChangeListener(JU.a.SOURCE,r.handleSourceUpdate_),r}return vQ(e,t),e.prototype.getSources=function(t,e){var r=this.getSource();return this.sources_?"function"==typeof this.sources_?this.sources_(t,e):this.sources_:r?[r]:[]},e.prototype.getRenderSource=function(){return this.renderedSource_||this.getSource()},e.prototype.getSourceState=function(){var t=this.getRenderSource();return t?t.getState():Qn.a.UNDEFINED},e.prototype.handleSourceUpdate_=function(){this.getSource()&&this.setStyle(this.style_)},e.prototype.getSourceBandCount_=function(){var t=this.getSource();return t&&"bandCount"in t?t.bandCount:4},e.prototype.createRenderer=function(){var t=bQ(this.style_,this.getSourceBandCount_());return new q$(this,{vertexShader:t.vertexShader,fragmentShader:t.fragmentShader,uniforms:t.uniforms,cacheSize:this.cacheSize_,paletteTextures:t.paletteTextures})},e.prototype.renderSources=function(t,e){for(var r,n=this.getRenderer(),i=0,o=e.length;i.5*n.resolution){var c=this.getSources(t.extent,this.renderedResolution_).filter((function(t){return!i.includes(t)}));if(c.length>0)return this.renderSources(t,c)}return u},e.prototype.setStyle=function(t){this.styleVariables_=t.variables||{},this.style_=t;var e=bQ(this.style_,this.getSourceBandCount_());this.getRenderer().reset({vertexShader:e.vertexShader,fragmentShader:e.fragmentShader,uniforms:e.uniforms,paletteTextures:e.paletteTextures}),this.changed()},e.prototype.updateStyleVariables=function(t){Object(ii.a)(this.styleVariables_,t),this.changed()},e}(KK.a);xQ.prototype.dispose;var wQ=xQ,EQ=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var OQ=function(t){function e(e){var r=this,n=void 0!==e.hidpi&&e.hidpi,i=void 0===e.imageSmoothing||e.imageSmoothing;void 0!==e.interpolate&&(i=e.interpolate),(r=t.call(this,{cacheSize:e.cacheSize,crossOrigin:"anonymous",interpolate:i,opaque:!0,projection:Object(u.o)("EPSG:3857"),reprojectionErrorThreshold:e.reprojectionErrorThreshold,state:Qn.a.LOADING,tileLoadFunction:e.tileLoadFunction,tilePixelRatio:n?2:1,wrapX:void 0===e.wrapX||e.wrapX,transition:e.transition,zDirection:e.zDirection})||this).hidpi_=n,r.culture_=void 0!==e.culture?e.culture:"en-us",r.maxZoom_=void 0!==e.maxZoom?e.maxZoom:-1,r.apiKey_=e.key,r.imagerySet_=e.imagerySet;var o="https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+r.imagerySet_+"?uriScheme=https&include=ImageryProviders&key="+r.apiKey_+"&c="+r.culture_;return Object(rJ.a)(o,r.handleImageryMetadataResponse.bind(r),void 0,"jsonp"),r}return EQ(e,t),e.prototype.getApiKey=function(){return this.apiKey_},e.prototype.getImagerySet=function(){return this.imagerySet_},e.prototype.handleImageryMetadataResponse=function(t){if(200==t.statusCode&&"OK"==t.statusDescription&&"ValidCredentials"==t.authenticationResultCode&&1==t.resourceSets.length&&1==t.resourceSets[0].resources.length){var e=t.resourceSets[0].resources[0],r=-1==this.maxZoom_?e.zoomMax:this.maxZoom_,n=this.getProjection(),i=Object(Ff.c)(n),o=this.hidpi_?2:1,a=e.imageWidth==e.imageHeight?e.imageWidth/o:[e.imageWidth/o,e.imageHeight/o],s=Object(Ff.b)({extent:i,minZoom:e.zoomMin,maxZoom:r,tileSize:a});this.tileGrid=s;var l=this.culture_,c=this.hidpi_;if(this.tileUrlFunction=Lf(e.imageUrlSubdomains.map((function(t){var r=[0,0,0],n=e.imageUrl.replace("{subdomain}",t).replace("{culture}",l);return function(t,e,i){if(t){Object(Tf.a)(t[0],t[1],t[2],r);var o=n;return c&&(o+="&dpi=d1&device=mobile"),o.replace("{quadkey}",function(t){var e,r,n=t[0],i=new Array(n),o=1<>=1;return i.join("")}(r))}}}))),e.imageryProviders){var h=Object(u.r)(Object(u.o)("EPSG:4326"),this.getProjection());this.setAttributions(function(t){var r=[],n=t.viewState,i=this.getTileGrid(),o=i.getZForResolution(n.resolution,this.zDirection),a=i.getTileCoordForCoordAndZ(n.center,o)[0];return e.imageryProviders.map((function(e){for(var n=!1,i=e.coverageAreas,o=0,s=i.length;o=l.zoomMin&&a<=l.zoomMax){var u=l.bbox,c=[u[1],u[0],u[3],u[2]],f=Object(mt.a)(c,h);if(Object(mt.G)(f,t.extent)){n=!0;break}}}n&&r.push(e.attribution)})),r.push('Terms of Use'),r}.bind(this))}this.setState(Qn.a.READY)}else this.setState(Qn.a.ERROR)},e}(Uf),SQ=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),IQ=function(t){function e(e){var r=t.call(this,{attributions:e.attributions,cacheSize:e.cacheSize,crossOrigin:e.crossOrigin,maxZoom:void 0!==e.maxZoom?e.maxZoom:18,minZoom:e.minZoom,projection:e.projection,transition:e.transition,wrapX:e.wrapX,zDirection:e.zDirection})||this;return r.account_=e.account,r.mapId_=e.map||"",r.config_=e.config||{},r.templateCache_={},r.initializeMap_(),r}return SQ(e,t),e.prototype.getConfig=function(){return this.config_},e.prototype.updateConfig=function(t){Object(ii.a)(this.config_,t),this.initializeMap_()},e.prototype.setConfig=function(t){this.config_=t||{},this.initializeMap_()},e.prototype.initializeMap_=function(){var t=JSON.stringify(this.config_);if(this.templateCache_[t])this.applyTemplate_(this.templateCache_[t]);else{var e="https://"+this.account_+".carto.com/api/v1/map";this.mapId_&&(e+="/named/"+this.mapId_);var r=new XMLHttpRequest;r.addEventListener("load",this.handleInitResponse_.bind(this,t)),r.addEventListener("error",this.handleInitError_.bind(this)),r.open("POST",e),r.setRequestHeader("Content-type","application/json"),r.send(JSON.stringify(this.config_))}},e.prototype.handleInitResponse_=function(t,e){var r=e.target;if(!r.status||r.status>=200&&r.status<300){var n=void 0;try{n=JSON.parse(r.responseText)}catch(t){return void this.setState(Qn.a.ERROR)}this.applyTemplate_(n),this.templateCache_[t]=n,this.setState(Qn.a.READY)}else this.setState(Qn.a.ERROR)},e.prototype.handleInitError_=function(t){this.setState(Qn.a.ERROR)},e.prototype.applyTemplate_=function(t){var e="https://"+t.cdn_url.https+"/"+this.account_+"/api/v1/map/"+t.layergroupid+"/{z}/{x}/{y}.png";this.setUrl(e)},e}(Fk),CQ=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),TQ=function(t){function e(e){var r=this,n=void 0===e.projection?"EPSG:3857":e.projection,i=e.tileGrid;return void 0===i&&n&&(i=Object(Ff.b)({extent:Object(Ff.c)(n),maxResolution:e.maxResolution,maxZoom:e.maxZoom,minZoom:e.minZoom,tileSize:e.tileSize})),(r=t.call(this,{cacheSize:.1,attributions:e.attributions,attributionsCollapsible:e.attributionsCollapsible,projection:n,tileGrid:i,opaque:e.opaque,state:e.state,tilePixelRatio:e.tilePixelRatio,wrapX:e.wrapX,transition:e.transition,interpolate:e.interpolate})||this).tileLoadingKeys_={},r.loader_=e.loader,r.handleTileChange_=r.handleTileChange_.bind(r),r.bandCount=void 0===e.bandCount?4:e.bandCount,r}return CQ(e,t),e.prototype.setLoader=function(t){this.loader_=t},e.prototype.getTile=function(t,e,r,n,i){var o=Object(Tf.e)(t,e,r);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var a=this.loader_;var s=new m$(Object(ii.a)({tileCoord:[t,e,r],loader:function(){return Object(Dn.e)((function(){return a(t,e,r)}))}},this.tileOptions));return s.key=this.getKey(),s.addEventListener(Di.a.CHANGE,this.handleTileChange_),this.tileCache.set(o,s),s},e.prototype.handleTileChange_=function(t){var e,r=t.target,n=Object(Gn.c)(r),i=r.getState();i==Ef.a.LOADING?(this.tileLoadingKeys_[n]=!0,e=Of):n in this.tileLoadingKeys_&&(delete this.tileLoadingKeys_[n],e=i==Ef.a.ERROR?If:i==Ef.a.LOADED?Sf:void 0),e&&this.dispatchEvent(new Cf.a(e,r))},e}(Cf.b);const PQ=new Map;function RQ(t,e){Array.isArray(t)||(t=[t]),t.forEach(t=>PQ.set(t,e))}async function LQ(t){const e=PQ.get(t.Compression);if(!e)throw new Error("Unknown compression method identifier: "+t.Compression);return new(await e())(t)}RQ([void 0,1],()=>Promise.resolve().then(r.bind(null,169)).then(t=>t.default)),RQ(5,()=>Promise.resolve().then(r.bind(null,170)).then(t=>t.default)),RQ(6,()=>{throw new Error("old style JPEG compression is not supported.")}),RQ(7,()=>Promise.resolve().then(r.bind(null,171)).then(t=>t.default)),RQ([8,32946],()=>Promise.resolve().then(r.bind(null,172)).then(t=>t.default)),RQ(32773,()=>Promise.resolve().then(r.bind(null,173)).then(t=>t.default)),RQ(34887,()=>Promise.resolve().then(r.bind(null,174)).then(t=>t.default)),RQ(50001,()=>Promise.resolve().then(r.bind(null,175)).then(t=>t.default));const MQ="undefined"!=typeof navigator&&navigator.hardwareConcurrency||2;var NQ=class{constructor(t=MQ,e){this.workers=null,this._awaitingDecoder=null,this.size=t,this.messageId=0,t&&(this._awaitingDecoder=e?Promise.resolve(e):new Promise(t=>{Promise.resolve().then(r.bind(null,168)).then(e=>{t(e.create)})}),this._awaitingDecoder.then(e=>{this._awaitingDecoder=null,this.workers=[];for(let r=0;rr.decode(t,e)):new Promise(r=>{const n=this.workers.find(t=>t.idle)||this.workers[Math.floor(Math.random()*this.size)];n.idle=!1;const i=this.messageId++,o=t=>{t.data.id===i&&(n.idle=!0,r(t.data.decoded),n.worker.removeEventListener("message",o))};n.worker.addEventListener("message",o),n.worker.postMessage({fileDirectory:t,buffer:e,id:i},[e])})}destroy(){this.workers&&(this.workers.forEach(t=>{t.worker.terminate()}),this.workers=null)}},AQ=r(86),kQ=r(88),jQ=r.n(kQ),FQ=r(119),DQ=r.n(FQ),GQ=r(12);function UQ(t,e,r,n=1){return new(Object.getPrototypeOf(t).constructor)(e*r*n)}function BQ(t,e,r){return(1-r)*t+r*e}function zQ(t,e,r,n,i,o="nearest"){switch(o.toLowerCase()){case"nearest":return function(t,e,r,n,i){const o=e/n,a=r/i;return t.map(t=>{const s=UQ(t,n,i);for(let l=0;l{const s=UQ(t,n,i);for(let l=0;l=this.fileDirectory.BitsPerSample.length)throw new RangeError(`Sample index ${t} is out of range.`);return Math.ceil(this.fileDirectory.BitsPerSample[t]/8)}getReaderForSample(t){const e=this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1,r=this.fileDirectory.BitsPerSample[t];switch(e){case 1:if(r<=8)return DataView.prototype.getUint8;if(r<=16)return DataView.prototype.getUint16;if(r<=32)return DataView.prototype.getUint32;break;case 2:if(r<=8)return DataView.prototype.getInt8;if(r<=16)return DataView.prototype.getInt16;if(r<=32)return DataView.prototype.getInt32;break;case 3:switch(r){case 16:return function(t,e){return Object(AQ.getFloat16)(this,t,e)};case 32:return DataView.prototype.getFloat32;case 64:return DataView.prototype.getFloat64}}throw Error("Unsupported data format/bitsPerSample")}getSampleFormat(t=0){return this.fileDirectory.SampleFormat?this.fileDirectory.SampleFormat[t]:1}getBitsPerSample(t=0){return this.fileDirectory.BitsPerSample[t]}getArrayForSample(t,e){return YQ(this.getSampleFormat(t),this.getBitsPerSample(t),e)}async getTileOrStrip(t,e,r,n,i){const o=Math.ceil(this.getWidth()/this.getTileWidth()),a=Math.ceil(this.getHeight()/this.getTileHeight());let s;const{tiles:l}=this;let u,c;1===this.planarConfiguration?s=e*o+t:2===this.planarConfiguration&&(s=r*o*a+e*o+t),this.isTiled?(u=this.fileDirectory.TileOffsets[s],c=this.fileDirectory.TileByteCounts[s]):(u=this.fileDirectory.StripOffsets[s],c=this.fileDirectory.StripByteCounts[s]);const h=(await this.source.fetch([{offset:u,length:c}],i))[0];let f;return null!==l&&l[s]?f=l[s]:(f=(async()=>{let t=await n.decode(this.fileDirectory,h);const r=this.getSampleFormat(),i=this.getBitsPerSample();return function(t,e){return(1!==t&&2!==t||!(e<=32)||e%8!=0)&&(3!==t||16!==e&&32!==e&&64!==e)}(r,i)&&(t=function(t,e,r,n,i,o,a){const s=new DataView(t),l=2===r?1:n,u=YQ(e,i,2===r?a*o:a*o*n),c=parseInt("1".repeat(i),2);if(1===e){let t;t=1===r?n*i:i;let e=o*t;0!=(7&e)&&(e=e+7&-8);for(let t=0;t>8-i-p&c;else if(p+i<=16)u[h]=s.getUint16(f)>>16-i-p&c;else if(p+i<=24){const t=s.getUint16(f)<<8|s.getUint8(f+2);u[h]=t>>24-i-p&c}else u[h]=s.getUint32(f)>>32-i-p&c}}}}return u.buffer}(t,r,this.planarConfiguration,this.getSamplesPerPixel(),i,this.getTileWidth(),this.getBlockHeight(e))),t})(),null!==l&&(l[s]=f)),{x:t,y:e,sample:r,data:await f}}async _readRaster(t,e,r,n,i,o,a,s,l){const u=this.getTileWidth(),c=this.getTileHeight(),h=this.getWidth(),f=this.getHeight(),p=Math.max(Math.floor(t[0]/u),0),d=Math.min(Math.ceil(t[2]/u),Math.ceil(h/u)),g=Math.max(Math.floor(t[1]/c),0),y=Math.min(Math.ceil(t[3]/c),Math.ceil(f/c)),m=t[2]-t[0];let _=this.getBytesPerPixel();const v=[],b=[];for(let t=0;t{const o=i.data,a=new DataView(o),s=this.getBlockHeight(i.y),l=i.y*c,d=i.x*u,g=l+s,y=(i.x+1)*u,x=b[p],E=Math.min(s,s-(g-t[3]),f-l),O=Math.min(u,u-(y-t[2]),h-d);for(let i=Math.max(0,t[1]-l);iu[2]||u[1]>u[3])throw new Error("Invalid subsets");const c=(u[2]-u[0])*(u[3]-u[1]),h=this.getSamplesPerPixel();if(e&&e.length){for(let t=0;t=h)return Promise.reject(new RangeError(`Invalid sample index '${e[t]}'.`))}else for(let t=0;tl[2]||l[1]>l[3])throw new Error("Invalid subsets");const u=this.fileDirectory.PhotometricInterpretation;if(u===GQ.j.RGB){let l=[0,1,2];if(this.fileDirectory.ExtraSamples!==GQ.a.Unspecified&&a){l=[];for(let t=0;t>24)/500+s,u=s-(t[e+2]<<24>>24)/200;l=.95047*(l*l*l>.008856?l*l*l:(l-16/116)/7.787),s=1*(s*s*s>.008856?s*s*s:(s-16/116)/7.787),u=1.08883*(u*u*u>.008856?u*u*u:(u-16/116)/7.787),i=3.2406*l+-1.5372*s+-.4986*u,o=-.9689*l+1.8758*s+.0415*u,a=.0557*l+-.204*s+1.057*u,i=i>.0031308?1.055*i**(1/2.4)-.055:12.92*i,o=o>.0031308?1.055*o**(1/2.4)-.055:12.92*o,a=a>.0031308?1.055*a**(1/2.4)-.055:12.92*a,n[r]=255*Math.max(0,Math.min(1,i)),n[r+1]=255*Math.max(0,Math.min(1,o)),n[r+2]=255*Math.max(0,Math.min(1,a))}return n}(p);break;default:throw new Error("Unsupported photometric interpretation.")}if(!e){const t=new Uint8Array(g.length/3),e=new Uint8Array(g.length/3),r=new Uint8Array(g.length/3);for(let n=0,i=0;nvoid 0===jQ()(t,"sample")):n.filter(e=>Number(jQ()(e,"sample"))===t);for(let t=0;t0;let i=!0;for(let o=0;o<8;o++){let a=this._dataView.getUint8(t+(e?o:7-o));n&&(i?0!==a&&(a=255&~(a-1),i=!1):a=255&~a),r+=a*256**o}return n&&(r=-r),r}getUint8(t,e){return this._dataView.getUint8(t,e)}getInt8(t,e){return this._dataView.getInt8(t,e)}getUint16(t,e){return this._dataView.getUint16(t,e)}getInt16(t,e){return this._dataView.getInt16(t,e)}getUint32(t,e){return this._dataView.getUint32(t,e)}getInt32(t,e){return this._dataView.getInt32(t,e)}getFloat16(t,e){return Object(AQ.getFloat16)(this._dataView,t,e)}getFloat32(t,e){return this._dataView.getFloat32(t,e)}getFloat64(t,e){return this._dataView.getFloat64(t,e)}}class HQ{constructor(t,e,r,n){this._dataView=new DataView(t),this._sliceOffset=e,this._littleEndian=r,this._bigTiff=n}get sliceOffset(){return this._sliceOffset}get sliceTop(){return this._sliceOffset+this.buffer.byteLength}get littleEndian(){return this._littleEndian}get bigTiff(){return this._bigTiff}get buffer(){return this._dataView.buffer}covers(t,e){return this.sliceOffset<=t&&this.sliceTop>=t+e}readUint8(t){return this._dataView.getUint8(t-this._sliceOffset,this._littleEndian)}readInt8(t){return this._dataView.getInt8(t-this._sliceOffset,this._littleEndian)}readUint16(t){return this._dataView.getUint16(t-this._sliceOffset,this._littleEndian)}readInt16(t){return this._dataView.getInt16(t-this._sliceOffset,this._littleEndian)}readUint32(t){return this._dataView.getUint32(t-this._sliceOffset,this._littleEndian)}readInt32(t){return this._dataView.getInt32(t-this._sliceOffset,this._littleEndian)}readFloat32(t){return this._dataView.getFloat32(t-this._sliceOffset,this._littleEndian)}readFloat64(t){return this._dataView.getFloat64(t-this._sliceOffset,this._littleEndian)}readUint64(t){const e=this.readUint32(t),r=this.readUint32(t+4);let n;if(this._littleEndian){if(n=e+2**32*r,!Number.isSafeInteger(n))throw new Error(n+" exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues");return n}if(n=2**32*e+r,!Number.isSafeInteger(n))throw new Error(n+" exceeds MAX_SAFE_INTEGER. Precision may be lost. Please report if you get this message to https://github.com/geotiffjs/geotiff.js/issues");return n}readInt64(t){let e=0;const r=(128&this._dataView.getUint8(t+(this._littleEndian?7:0)))>0;let n=!0;for(let i=0;i<8;i++){let o=this._dataView.getUint8(t+(this._littleEndian?i:7-i));r&&(n?0!==o&&(o=255&~(o-1),n=!1):o=255&~o),e+=o*256**i}return r&&(e=-e),e}readOffset(t){return this._bigTiff?this.readUint64(t):this.readUint32(t)}}const ZQ="\r\n\r\n";function KQ(t){if(void 0!==Object.fromEntries)return Object.fromEntries(t);const e={};for(const[r,n]of t)e[r.toLowerCase()]=n;return e}function JQ(t){return KQ(t.split("\r\n").map(t=>{const e=t.split(":").map(t=>t.trim());return e[0]=e[0].toLowerCase(),e}))}function $Q(t){let e,r,n;return t&&([,e,r,n]=t.match(/bytes (\d+)-(\d+)\/(\d+)/),e=parseInt(e,10),r=parseInt(r,10),n=parseInt(n,10)),{start:e,end:r,total:n}}var QQ=r(56);class t0 extends Map{constructor(t={}){if(super(),!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if("number"==typeof t.maxAge&&0===t.maxAge)throw new TypeError("`maxAge` must be a number greater than 0");this.maxSize=t.maxSize,this.maxAge=t.maxAge||Number.POSITIVE_INFINITY,this.onEviction=t.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_emitEvictions(t){if("function"==typeof this.onEviction)for(const[e,r]of t)this.onEviction(e,r.value)}_deleteIfExpired(t,e){return"number"==typeof e.expiry&&e.expiry<=Date.now()&&("function"==typeof this.onEviction&&this.onEviction(t,e.value),this.delete(t))}_getOrDeleteIfExpired(t,e){if(!1===this._deleteIfExpired(t,e))return e.value}_getItemValue(t,e){return e.expiry?this._getOrDeleteIfExpired(t,e):e.value}_peek(t,e){const r=e.get(t);return this._getItemValue(t,r)}_set(t,e){this.cache.set(t,e),this._size++,this._size>=this.maxSize&&(this._size=0,this._emitEvictions(this.oldCache),this.oldCache=this.cache,this.cache=new Map)}_moveToRecent(t,e){this.oldCache.delete(t),this._set(t,e)}*_entriesAscending(){for(const t of this.oldCache){const[e,r]=t;if(!this.cache.has(e)){!1===this._deleteIfExpired(e,r)&&(yield t)}}for(const t of this.cache){const[e,r]=t;!1===this._deleteIfExpired(e,r)&&(yield t)}}get(t){if(this.cache.has(t)){const e=this.cache.get(t);return this._getItemValue(t,e)}if(this.oldCache.has(t)){const e=this.oldCache.get(t);if(!1===this._deleteIfExpired(t,e))return this._moveToRecent(t,e),e.value}}set(t,e,{maxAge:r=this.maxAge}={}){const n="number"==typeof r&&r!==Number.POSITIVE_INFINITY?Date.now()+r:void 0;this.cache.has(t)?this.cache.set(t,{value:e,expiry:n}):this._set(t,{value:e,expiry:n})}has(t){return this.cache.has(t)?!this._deleteIfExpired(t,this.cache.get(t)):!!this.oldCache.has(t)&&!this._deleteIfExpired(t,this.oldCache.get(t))}peek(t){return this.cache.has(t)?this._peek(t,this.cache):this.oldCache.has(t)?this._peek(t,this.oldCache):void 0}delete(t){const e=this.cache.delete(t);return e&&this._size--,this.oldCache.delete(t)||e}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}resize(t){if(!(t&&t>0))throw new TypeError("`maxSize` must be a number greater than 0");const e=[...this._entriesAscending()],r=e.length-t;r<0?(this.cache=new Map(e),this.oldCache=new Map,this._size=e.length):(r>0&&this._emitEvictions(e.slice(0,r)),this.oldCache=new Map(e.slice(r)),this.cache=new Map,this._size=0),this.maxSize=t}*keys(){for(const[t]of this)yield t}*values(){for(const[,t]of this)yield t}*[Symbol.iterator](){for(const t of this.cache){const[e,r]=t;!1===this._deleteIfExpired(e,r)&&(yield[e,r.value])}for(const t of this.oldCache){const[e,r]=t;if(!this.cache.has(e)){!1===this._deleteIfExpired(e,r)&&(yield[e,r.value])}}}*entriesDescending(){let t=[...this.cache];for(let e=t.length-1;e>=0;--e){const r=t[e],[n,i]=r;!1===this._deleteIfExpired(n,i)&&(yield[n,i.value])}t=[...this.oldCache];for(let e=t.length-1;e>=0;--e){const r=t[e],[n,i]=r;if(!this.cache.has(n)){!1===this._deleteIfExpired(n,i)&&(yield[n,i.value])}}}*entriesAscending(){for(const[t,e]of this._entriesAscending())yield[t,e.value]}get size(){if(!this._size)return this.oldCache.size;let t=0;for(const e of this.oldCache.keys())this.cache.has(e)||t++;return Math.min(this._size+t,this.maxSize)}entries(){return this.entriesAscending()}forEach(t,e=this){for(const[r,n]of this.entriesAscending())t.call(e,n,r,this)}get[Symbol.toStringTag](){return JSON.stringify([...this.entriesAscending()])}}var e0=r(25);class r0{constructor(t,e,r=null){this.offset=t,this.length=e,this.data=r}get top(){return this.offset+this.length}}class n0{constructor(t,e,r){this.offset=t,this.length=e,this.blockIds=r}}class i0 extends QQ.a{constructor(t,{blockSize:e=65536,cacheSize:r=100}={}){super(),this.source=t,this.blockSize=e,this.blockCache=new t0({maxSize:r}),this.blockRequests=new Map,this.blockIdsToFetch=new Set,this.abortedBlockIds=new Set}get fileSize(){return this.source.fileSize}async fetch(t,e){const r=[],n=[],i=[];for(const{offset:e,length:o}of t){let t=e+o;const{fileSize:a}=this;null!==a&&(t=Math.min(t,a));for(let o=Math.floor(e/this.blockSize)*this.blockSize;othis.abortedBlockIds.has(t)||!this.blockCache.has(t));if(s.forEach(t=>this.blockIdsToFetch.add(t)),s.length>0&&e&&!e.aborted){this.fetchBlocks(null);for(const t of s){const e=this.blockRequests.get(t);if(!e)throw new Error(`Block ${t} is not in the block requests`);a.push(e)}await Promise.allSettled(a)}if(e&&e.aborted)throw new e0.a("Request was aborted");const l=i.map(t=>this.blockCache.get(t)),u=l.filter(t=>!t);if(u.length)throw new e0.b(u,"Request failed");const c=new Map(Object(e0.i)(i,l));return this.readSliceData(t,c)}fetchBlocks(t){if(this.blockIdsToFetch.size>0){const e=this.groupBlocks(this.blockIdsToFetch),r=this.source.fetch(e,t);for(let n=0;n{try{const t=(await r)[n],i=e*this.blockSize,o=i-t.offset,a=Math.min(o+this.blockSize,t.data.byteLength),s=t.data.slice(o,a),l=new r0(i,s.byteLength,s,e);this.blockCache.set(e,l),this.abortedBlockIds.delete(e)}catch(r){if("AbortError"!==r.name)throw r;r.signal=t,this.blockCache.delete(e),this.abortedBlockIds.add(e)}finally{this.blockRequests.delete(e)}})())}this.blockIdsToFetch.clear()}}groupBlocks(t){const e=Array.from(t).sort((t,e)=>t-e);if(0===e.length)return[];let r=[],n=null;const i=[];for(const t of e)null===n||n+1===t?(r.push(t),n=t):(i.push(new n0(r[0]*this.blockSize,r.length*this.blockSize,r)),r=[t],n=t);return i.push(new n0(r[0]*this.blockSize,r.length*this.blockSize,r)),i}readSliceData(t,e){return t.map(t=>{let r=t.offset+t.length;null!==this.fileSize&&(r=Math.min(this.fileSize,r));const n=Math.floor(t.offset/this.blockSize),i=Math.floor(r/this.blockSize),o=new ArrayBuffer(t.length),a=new Uint8Array(o);for(let o=n;o<=i;++o){const n=e.get(o),i=n.offset-t.offset,s=n.top-r;let l,u=0,c=0;i<0?u=-i:i>0&&(c=i),l=s<0?n.length-u:r-n.offset-u;const h=new Uint8Array(n.data,u,l);a.set(h,c)}return o})}}var o0=r(63);class a0 extends o0.b{constructor(t){super(),this.response=t}get status(){return this.response.status}getHeader(t){return this.response.headers.get(t)}async getData(){return this.response.arrayBuffer?await this.response.arrayBuffer():(await this.response.buffer()).buffer}}class s0 extends o0.a{constructor(t,e){super(t),this.credentials=e}async request({headers:t,credentials:e,signal:r}={}){const n=await fetch(this.url,{headers:t,credentials:e,signal:r});return new a0(n)}}class l0 extends o0.b{constructor(t,e){super(),this.xhr=t,this.data=e}get status(){return this.xhr.status}getHeader(t){return this.xhr.getResponseHeader(t)}async getData(){return this.data}}class u0 extends o0.a{constructRequest(t,e){return new Promise((r,n)=>{const i=new XMLHttpRequest;i.open("GET",this.url),i.responseType="arraybuffer";for(const[e,r]of Object.entries(t))i.setRequestHeader(e,r);i.onload=()=>{const t=i.response;r(new l0(i,t))},i.onerror=n,i.onabort=()=>n(new e0.a("Request aborted")),i.send(),e&&(e.aborted&&i.abort(),e.addEventListener("abort",()=>i.abort()))})}async request({headers:t,signal:e}={}){return await this.constructRequest(t,e)}}var c0=r(120);class h0 extends QQ.a{constructor(t,e,r,n){super(),this.client=t,this.headers=e,this.maxRanges=r,this.allowFullFile=n,this._fileSize=null}async fetch(t,e){return this.maxRanges>=t.length?this.fetchSlices(t,e):(this.maxRanges>0&&t.length,Promise.all(t.map(t=>this.fetchSlice(t,e))))}async fetchSlices(t,e){const r=await this.client.request({headers:{...this.headers,Range:"bytes="+t.map(({offset:t,length:e})=>`${t}-${t+e}`).join(",")},signal:e});if(r.ok){if(206===r.status){const{type:n,params:i}=function(t){const[e,...r]=t.split(";").map(t=>t.trim());return{type:e,params:KQ(r.map(t=>t.split("=")))}}(r.getHeader("content-type"));if("multipart/byteranges"===n){const t=function(t,e){let r=null;const n=new TextDecoder("ascii"),i=[],o="--"+e,a=o+"--";for(let e=0;e<10;++e)n.decode(new Uint8Array(t,e,o.length))===o&&(r=e);if(null===r)throw new Error("Could not find initial boundary");for(;r1){const r=await Promise.all(t.slice(1).map(t=>this.fetchSlice(t,e)));return u.concat(r)}return u}{if(!this.allowFullFile)throw new Error("Server responded with full file");const t=await r.getData();return this._fileSize=t.byteLength,[{data:t,offset:0,length:t.byteLength}]}}throw new Error("Error fetching data.")}async fetchSlice(t,e){const{offset:r,length:n}=t,i=await this.client.request({headers:{...this.headers,Range:`bytes=${r}-${r+n}`},signal:e});if(i.ok){if(206===i.status){const t=await i.getData(),{total:e}=$Q(i.getHeader("content-range"));return this._fileSize=e||null,{data:t,offset:r,length:n}}{if(!this.allowFullFile)throw new Error("Server responded with full file");const t=await i.getData();return this._fileSize=t.byteLength,{data:t,offset:0,length:t.byteLength}}}throw new Error("Error fetching data.")}get fileSize(){return this._fileSize}}function f0(t,{blockSize:e,cacheSize:r}){return null===e?t:new i0(t,{blockSize:e,cacheSize:r})}function p0(t,{forceXHR:e=!1,...r}={}){return"function"!=typeof fetch||e?"undefined"!=typeof XMLHttpRequest?function(t,{headers:e={},maxRanges:r=0,allowFullFile:n=!1,...i}={}){const o=new u0(t);return f0(new h0(o,e,r,n),i)}(t,r):function(t,{headers:e={},maxRanges:r=0,allowFullFile:n=!1,...i}={}){const o=new c0.a(t);return f0(new h0(o,e,r,n),i)}(t,r):function(t,{headers:e={},credentials:r,maxRanges:n=0,allowFullFile:i=!1,...o}={}){const a=new s0(t,r);return f0(new h0(a,e,n,i),o)}(t,r)}QQ.a;QQ.a;r(124);const d0=Object(e0.f)(GQ.e),g0=Object(e0.f)(GQ.i),y0={};Object(e0.c)(y0,d0),Object(e0.c)(y0,g0);Object(e0.f)(GQ.g);const m0={nextZero:(t,e)=>{let r=e;for(;0!==t[r];)r++;return r},readUshort:(t,e)=>t[e]<<8|t[e+1],readShort:(t,e)=>{const r=m0.ui8;return r[0]=t[e+1],r[1]=t[e+0],m0.i16[0]},readInt:(t,e)=>{const r=m0.ui8;return r[0]=t[e+3],r[1]=t[e+2],r[2]=t[e+1],r[3]=t[e+0],m0.i32[0]},readUint:(t,e)=>{const r=m0.ui8;return r[0]=t[e+3],r[1]=t[e+2],r[2]=t[e+1],r[3]=t[e+0],m0.ui32[0]},readASCII:(t,e,r)=>r.map(r=>String.fromCharCode(t[e+r])).join(""),readFloat:(t,e)=>{const r=m0.ui8;return Object(e0.g)(4,n=>{r[n]=t[e+3-n]}),m0.fl32[0]},readDouble:(t,e)=>{const r=m0.ui8;return Object(e0.g)(8,n=>{r[n]=t[e+7-n]}),m0.fl64[0]},writeUshort:(t,e,r)=>{t[e]=r>>8&255,t[e+1]=255&r},writeUint:(t,e,r)=>{t[e]=r>>24&255,t[e+1]=r>>16&255,t[e+2]=r>>8&255,t[e+3]=r>>0&255},writeASCII:(t,e,r)=>{Object(e0.g)(r.length,n=>{t[e+n]=r.charCodeAt(n)})},ui8:new Uint8Array(8)};m0.fl64=new Float64Array(m0.ui8.buffer),m0.writeDouble=(t,e,r)=>{m0.fl64[0]=r,Object(e0.g)(8,r=>{t[e+r]=m0.ui8[7-r]})};function _0(t){switch(t){case GQ.h.BYTE:case GQ.h.ASCII:case GQ.h.SBYTE:case GQ.h.UNDEFINED:return 1;case GQ.h.SHORT:case GQ.h.SSHORT:return 2;case GQ.h.LONG:case GQ.h.SLONG:case GQ.h.FLOAT:case GQ.h.IFD:return 4;case GQ.h.RATIONAL:case GQ.h.SRATIONAL:case GQ.h.DOUBLE:case GQ.h.LONG8:case GQ.h.SLONG8:case GQ.h.IFD8:return 8;default:throw new RangeError("Invalid field type: "+t)}}function v0(t,e,r,n){let i=null,o=null;const a=_0(e);switch(e){case GQ.h.BYTE:case GQ.h.ASCII:case GQ.h.UNDEFINED:i=new Uint8Array(r),o=t.readUint8;break;case GQ.h.SBYTE:i=new Int8Array(r),o=t.readInt8;break;case GQ.h.SHORT:i=new Uint16Array(r),o=t.readUint16;break;case GQ.h.SSHORT:i=new Int16Array(r),o=t.readInt16;break;case GQ.h.LONG:case GQ.h.IFD:i=new Uint32Array(r),o=t.readUint32;break;case GQ.h.SLONG:i=new Int32Array(r),o=t.readInt32;break;case GQ.h.LONG8:case GQ.h.IFD8:i=new Array(r),o=t.readUint64;break;case GQ.h.SLONG8:i=new Array(r),o=t.readInt64;break;case GQ.h.RATIONAL:i=new Uint32Array(2*r),o=t.readUint32;break;case GQ.h.SRATIONAL:i=new Int32Array(2*r),o=t.readInt32;break;case GQ.h.FLOAT:i=new Float32Array(r),o=t.readFloat32;break;case GQ.h.DOUBLE:i=new Float64Array(r),o=t.readFloat64;break;default:throw new RangeError("Invalid field type: "+e)}if(e!==GQ.h.RATIONAL&&e!==GQ.h.SRATIONAL)for(let e=0;et.getWidth()-e.getWidth());for(let e=0;en||o&&o>a)break}}let h=e;if(a){const[t,e]=s.getOrigin(),[r,n]=l.getResolution(s);h=[Math.round((a[0]-t)/r),Math.round((a[1]-e)/n),Math.round((a[2]-t)/r),Math.round((a[3]-e)/n)],h=[Math.min(h[0],h[2]),Math.min(h[1],h[3]),Math.max(h[0],h[2]),Math.max(h[1],h[3])]}return l.readRasters({...t,window:h})}}class E0 extends w0{constructor(t,e,r,n,i={}){super(),this.source=t,this.littleEndian=e,this.bigTiff=r,this.firstIFDOffset=n,this.cache=i.cache||!1,this.ifdRequests=[],this.ghostValues=null}async getSlice(t,e){const r=this.bigTiff?4048:1024;return new HQ((await this.source.fetch([{offset:t,length:void 0!==e?e:r}]))[0],t,this.littleEndian,this.bigTiff)}async parseFileDirectoryAt(t){const e=this.bigTiff?20:12,r=this.bigTiff?8:2;let n=await this.getSlice(t);const i=this.bigTiff?n.readUint64(t):n.readUint16(t),o=i*e+(this.bigTiff?16:6);n.covers(t,o)||(n=await this.getSlice(t,o));const a={};let s=t+(this.bigTiff?8:2);for(let t=0;t{const e=await this.ifdRequests[t-1];if(0===e.nextIFDByteOffset)throw new x0(t);return this.parseFileDirectoryAt(e.nextIFDByteOffset)})(),this.ifdRequests[t]}async getImage(t=0){const e=await this.requestIFD(t);return new WQ(e.fileDirectory,e.geoKeyDirectory,this.dataView,this.littleEndian,this.cache,this.source)}async getImageCount(){let t=0,e=!0;for(;e;)try{await this.requestIFD(t),++t}catch(t){if(!(t instanceof x0))throw t;e=!1}return t}async getGhostValues(){const t=this.bigTiff?16:8;if(this.ghostValues)return this.ghostValues;const e="GDAL_STRUCTURAL_METADATA_SIZE=",r=e.length+100;let n=await this.getSlice(t,r);if(e===v0(n,GQ.h.ASCII,e.length,t)){const e=v0(n,GQ.h.ASCII,r,t).split("\n")[0],i=Number(e.split("=")[1].split(" ")[0])+e.length;i>r&&(n=await this.getSlice(t,i));const o=v0(n,GQ.h.ASCII,i,t);this.ghostValues={},o.split("\n").filter(t=>t.length>0).map(t=>t.split("=")).forEach(([t,e])=>{this.ghostValues[t]=e})}return this.ghostValues}static async fromSource(t,e,r){const n=(await t.fetch([{offset:0,length:1024}],r))[0],i=new XQ(n),o=i.getUint16(0,0);let a;if(18761===o)a=!0;else{if(19789!==o)throw new TypeError("Invalid byte order value.");a=!1}const s=i.getUint16(2,a);let l;if(42===s)l=!1;else{if(43!==s)throw new TypeError("Invalid magic number.");l=!0;if(8!==i.getUint16(4,a))throw new Error("Unsupported offset byte-size.")}const u=l?i.getUint64(8,a):i.getUint32(4,a);return new E0(t,a,l,u,e)}close(){return"function"==typeof this.source.close&&this.source.close()}}class O0 extends w0{constructor(t,e){super(),this.mainFile=t,this.overviewFiles=e,this.imageFiles=[t].concat(e),this.fileDirectoriesPerFile=null,this.fileDirectoriesPerFileParsing=null,this.imageCount=null}async parseFileDirectoriesPerFile(){const t=[this.mainFile.parseFileDirectoryAt(this.mainFile.firstIFDOffset)].concat(this.overviewFiles.map(t=>t.parseFileDirectoryAt(t.firstIFDOffset)));return this.fileDirectoriesPerFile=await Promise.all(t),this.fileDirectoriesPerFile}async getImage(t=0){await this.getImageCount(),await this.parseFileDirectoriesPerFile();let e=0,r=0;for(let n=0;nt.getImageCount()));return this.imageCounts=await Promise.all(t),this.imageCount=this.imageCounts.reduce((t,e)=>t+e,0),this.imageCount}}var S0,I0=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),C0="STATISTICS_MAXIMUM",T0="STATISTICS_MINIMUM";function P0(t){try{return t.getBoundingBox()}catch(r){var e=t.fileDirectory;return[0,0,e.ImageWidth,e.ImageLength]}}function R0(t){try{return t.getOrigin().slice(0,2)}catch(e){return[0,t.fileDirectory.ImageLength]}}function L0(t,e){try{return t.getResolution(e)[0]}catch(r){return e.fileDirectory.ImageWidth/t.fileDirectory.ImageWidth}}function M0(t){var e=t.geoKeys;if(!e)return null;if(e.ProjectedCSTypeGeoKey){var r="EPSG:"+e.ProjectedCSTypeGeoKey;if(!(n=Object(u.o)(r)))(i=Object(Pn.c)(e.ProjLinearUnitsGeoKey))&&(n=new u.b({code:r,units:i}));return n}if(e.GeographicTypeGeoKey){var n,i;r="EPSG:"+e.GeographicTypeGeoKey;if(!(n=Object(u.o)(r)))(i=Object(Pn.c)(e.GeogAngularUnitsGeoKey))&&(n=new u.b({code:r,units:i}));return n}return null}function N0(t){return t.getImageCount().then((function(e){for(var r=new Array(e),n=0;nE0.fromSource(p0(t,r))));return new O0(i,o)}(t.url,t.overviews,e):async function(t,e={},r){return E0.fromSource(p0(t,e),r)}(t.url,e)).then(N0)}function k0(t,e,r,n,i){if(Array.isArray(t)){var o=t.length;if(!Array.isArray(e)||o!=e.length){var a=new Error(n);throw i(a),a}for(var s=0;sr*t)throw new Error(n)}function j0(t){return t instanceof Int8Array?127:t instanceof Uint8Array||t instanceof Uint8ClampedArray?255:t instanceof Int16Array?32767:t instanceof Uint16Array?65535:t instanceof Int32Array?2147483647:t instanceof Uint32Array?4294967295:t instanceof Float32Array?34e37:255}var F0=function(t){function e(e){var r=t.call(this,{state:Qn.a.LOADING,tileGrid:null,projection:null,opaque:e.opaque,transition:e.transition,interpolate:!1!==e.interpolate,wrapX:e.wrapX})||this;r.sourceInfo_=e.sources;var n=r.sourceInfo_.length;r.sourceOptions_=e.sourceOptions,r.sourceImagery_=new Array(n),r.resolutionFactors_=new Array(n),r.samplesPerPixel_,r.nodataValues_,r.metadata_,r.normalize_=!1!==e.normalize,r.addAlpha_=!1,r.error_=null,r.readMethod_=e.convertToRGB?"readRGB":"readRasters",r.setKey(r.sourceInfo_.map((function(t){return t.url})).join(","));for(var i=r,o=new Array(n),a=0;ay.length&&(l=i.length-y.length);var E=i[i.length-1]/y[y.length-1];f.resolutionFactors_[u]=E;var O=y.map((function(t){return t*E}));w="Resolution mismatch for source ".concat(u,", got [").concat(O,"] but expected [").concat(i,"]");k0(i.slice(l,i.length),O,.02,w,f.viewRejector)}else i=y,f.resolutionFactors_[u]=1;n?k0(n.slice(l,n.length),g,0,"Tile size mismatch for source ".concat(u),f.viewRejector):n=g,f.sourceImagery_[u]=c.reverse()},f=this,p=0;p=0;--d){var _=M0(m[d]);if(_){this.projection=_;break}}}this.samplesPerPixel_=o,this.nodataValues_=a,this.metadata_=s;t:for(p=0;pf||u>f;)c.push([Math.ceil(l/f),Math.ceil(u/f)]),f+=f;break;case B0:for(var p=l,d=u;p>f||d>f;)c.push([Math.ceil(p/f),Math.ceil(d/f)]),p>>=1,d>>=1;break;default:Object(Ui.a)(!1,53)}c.push([1,1]),c.reverse();for(var g=[s],y=[0],m=1,_=c.length;m<_;m++)g.push(s<0&&!isNaN(l[1])&&l[1]>0,60);var u,c,f,p=l[0],d=l[1],g=n.tileSize,y=n.tilePixelRatio||1,m=n.format||"jpg",_=n.quality||(n.version==lZ?"native":"default"),v=n.resolutions||[],b=n.supports||[],x=n.extent||[0,-d,p,0],w=null!=s&&Array.isArray(s)&&s.length>0,E=void 0!==g&&("number"==typeof g&&Number.isInteger(g)&&g>0||Array.isArray(g)&&g.length>0),O=null!=b&&Array.isArray(b)&&(Object(h.f)(b,"regionByPx")||Object(h.f)(b,"regionByPct"))&&(Object(h.f)(b,"sizeByWh")||Object(h.f)(b,"sizeByH")||Object(h.f)(b,"sizeByW")||Object(h.f)(b,"sizeByPct"));if(v.sort((function(t,e){return e-t})),E||O)if(null!=g&&("number"==typeof g&&Number.isInteger(g)&&g>0?(u=g,c=g):Array.isArray(g)&&g.length>0&&((1==g.length||null==g[1]&&Number.isInteger(g[0]))&&(u=g[0],c=g[0]),2==g.length&&(Number.isInteger(g[0])&&Number.isInteger(g[1])?(u=g[0],c=g[1]):null==g[0]&&Number.isInteger(g[1])&&(u=g[1],c=g[1])))),void 0!==u&&void 0!==c||(u=yo.b,c=yo.b),0==v.length)for(var S=f=Math.max(Math.ceil(Math.log(p/u)/Math.LN2),Math.ceil(Math.log(d/c)/Math.LN2));S>=0;S--)v.push(Math.pow(2,S));else{var I=Math.max.apply(Math,v);f=Math.round(Math.log(I)/Math.LN2)}else if(u=p,c=d,v=[],w){s.sort((function(t,e){return t[0]-e[0]})),f=-1;var C=[];for(S=0;S0&&v[v.length-1]==T?C.push(S):(v.push(T),f++)}if(C.length>0)for(S=0;Sf)){var g=t[1],y=t[2],x=v[l];if(!(void 0===g||void 0===y||void 0===x||g<0||Math.ceil(p/x/u)<=g||y<0||Math.ceil(d/x/c)<=y)){if(O||E){var S=g*u*x,I=y*c*x,C=u*x,T=c*x,P=u,R=c;if(S+C>p&&(C=p-S),I+T>d&&(T=d-I),S+u*x>p&&(P=Math.floor((p-S+x-1)/x)),I+c*x>d&&(R=Math.floor((d-I+x-1)/x)),0==S&&C==p&&0==I&&T==d)n="full";else if(!O||Object(h.f)(b,"regionByPx"))n=S+","+I+","+C+","+T;else if(Object(h.f)(b,"regionByPct")){n="pct:"+Y0(S/p*100)+","+Y0(I/d*100)+","+Y0(C/p*100)+","+Y0(T/d*100)}a!=cZ||O&&!Object(h.f)(b,"sizeByWh")?!O||Object(h.f)(b,"sizeByW")?i=P+",":Object(h.f)(b,"sizeByH")?i=","+R:Object(h.f)(b,"sizeByWh")?i=P+","+R:Object(h.f)(b,"sizeByPct")&&(i="pct:"+Y0(100/x)):i=P+","+R}else if(n="full",w){var L=s[l][0],M=s[l][1];i=a==cZ?L==p&&M==d?"max":L+","+M:L==p?"full":L+","}else i=a==cZ?"max":"full";return o+n+"/"+i+"/0/"+_+"."+m}}},transition:n.transition})||this).zDirection=n.zDirection,r}return q0(e,t),e}(Uf),X0=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),H0=function(t){function e(e){var r=this,n=e||{},i=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(i=n.interpolate),(r=t.call(this,{attributions:n.attributions,interpolate:i,projection:n.projection,resolutions:n.resolutions})||this).crossOrigin_=void 0!==n.crossOrigin?n.crossOrigin:null,r.hidpi_=void 0===n.hidpi||n.hidpi,r.url_=n.url,r.imageLoadFunction_=void 0!==n.imageLoadFunction?n.imageLoadFunction:ip.b,r.params_=n.params||{},r.image_=null,r.imageSize_=[0,0],r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return X0(e,t),e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){if(void 0===this.url_)return null;e=this.findNearestResolution(e),r=this.hidpi_?r:1;var i=this.image_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&Object(mt.h)(i.getExtent(),t))return i;var o={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};Object(ii.a)(o,this.params_);var a=((t=t.slice())[0]+t[2])/2,s=(t[1]+t[3])/2;if(1!=this.ratio_){var l=this.ratio_*Object(mt.F)(t)/2,u=this.ratio_*Object(mt.A)(t)/2;t[0]=a-l,t[1]=s-u,t[2]=a+l,t[3]=s+u}var c=e/r,h=Math.ceil(Object(mt.F)(t)/c),f=Math.ceil(Object(mt.A)(t)/c);t[0]=a-c*h/2,t[2]=a+c*h/2,t[1]=s-c*f/2,t[3]=s+c*f/2,this.imageSize_[0]=h,this.imageSize_[1]=f;var p=this.getRequestUrl_(t,this.imageSize_,r,n,o);return this.image_=new op.a(t,e,r,p,this.crossOrigin_,this.imageLoadFunction_),this.renderedRevision_=this.getRevision(),this.image_.addEventListener(Di.a.CHANGE,this.handleImageChange.bind(this)),this.image_},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.getRequestUrl_=function(t,e,r,n,i){var o=n.getCode().split(/:(?=\d+$)/).pop();i.SIZE=e[0]+","+e[1],i.BBOX=t.join(","),i.BBOXSR=o,i.IMAGESR=o,i.DPI=Math.round(90*r);var a=this.url_,s=a.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage");return s==a&&Object(Ui.a)(!1,50),Yf(s,i)},e.prototype.getUrl=function(){return this.url_},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e.prototype.setUrl=function(t){t!=this.url_&&(this.url_=t,this.image_=null,this.changed())},e.prototype.updateParams=function(t){Object(ii.a)(this.params_,t),this.image_=null,this.changed()},e}(ip.a),Z0=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),K0=function(t){function e(e){var r=this,n=e||{},i=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(i=n.interpolate),(r=t.call(this,{attributions:n.attributions,interpolate:i,projection:n.projection,resolutions:n.resolutions,state:n.state})||this).canvasFunction_=n.canvasFunction,r.canvas_=null,r.renderedRevision_=0,r.ratio_=void 0!==n.ratio?n.ratio:1.5,r}return Z0(e,t),e.prototype.getImageInternal=function(t,e,r,n){e=this.findNearestResolution(e);var i=this.canvas_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&Object(mt.h)(i.getExtent(),t))return i;t=t.slice(),Object(mt.K)(t,this.ratio_);var o=[Object(mt.F)(t)/e*r,Object(mt.A)(t)/e*r],a=this.canvasFunction_.call(this,t,e,r,o,n);return a&&(i=new u$.a(t,e,r,a)),this.canvas_=i,this.renderedRevision_=this.getRevision(),i},e}(ip.a),J0=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();var $0=function(t){function e(e){var r=this,n=void 0===e.imageSmoothing||e.imageSmoothing;return void 0!==e.interpolate&&(n=e.interpolate),(r=t.call(this,{interpolate:n,projection:e.projection,resolutions:e.resolutions})||this).crossOrigin_=void 0!==e.crossOrigin?e.crossOrigin:null,r.displayDpi_=void 0!==e.displayDpi?e.displayDpi:96,r.params_=e.params||{},r.url_=e.url,r.imageLoadFunction_=void 0!==e.imageLoadFunction?e.imageLoadFunction:ip.b,r.hidpi_=void 0===e.hidpi||e.hidpi,r.metersPerUnit_=void 0!==e.metersPerUnit?e.metersPerUnit:1,r.ratio_=void 0!==e.ratio?e.ratio:1,r.useOverlay_=void 0!==e.useOverlay&&e.useOverlay,r.image_=null,r.renderedRevision_=0,r}return J0(e,t),e.prototype.getParams=function(){return this.params_},e.prototype.getImageInternal=function(t,e,r,n){e=this.findNearestResolution(e),r=this.hidpi_?r:1;var i=this.image_;if(i&&this.renderedRevision_==this.getRevision()&&i.getResolution()==e&&i.getPixelRatio()==r&&Object(mt.h)(i.getExtent(),t))return i;1!=this.ratio_&&(t=t.slice(),Object(mt.K)(t,this.ratio_));var o=[Object(mt.F)(t)/e*r,Object(mt.A)(t)/e*r];if(void 0!==this.url_){var a=this.getUrl(this.url_,this.params_,t,o,n);(i=new op.a(t,e,r,a,this.crossOrigin_,this.imageLoadFunction_)).addEventListener(Di.a.CHANGE,this.handleImageChange.bind(this))}else i=null;return this.image_=i,this.renderedRevision_=this.getRevision(),i},e.prototype.getImageLoadFunction=function(){return this.imageLoadFunction_},e.prototype.updateParams=function(t){Object(ii.a)(this.params_,t),this.changed()},e.prototype.getUrl=function(t,e,r,n,i){var o=function(t,e,r,n){var i=Object(mt.F)(t),o=Object(mt.A)(t),a=e[0],s=e[1],l=.0254/n;return s*i>a*o?i*r/(a*l):o*r/(s*l)}(r,n,this.metersPerUnit_,this.displayDpi_),a=Object(mt.x)(r),s={OPERATION:this.useOverlay_?"GETDYNAMICMAPOVERLAYIMAGE":"GETMAPIMAGE",VERSION:"2.0.0",LOCALE:"en",CLIENTAGENT:"ol/source/ImageMapGuide source",CLIP:"1",SETDISPLAYDPI:this.displayDpi_,SETDISPLAYWIDTH:Math.round(n[0]),SETDISPLAYHEIGHT:Math.round(n[1]),SETVIEWSCALE:o,SETVIEWCENTERX:a[0],SETVIEWCENTERY:a[1]};return Object(ii.a)(s,e),Yf(t,s)},e.prototype.setImageLoadFunction=function(t){this.image_=null,this.imageLoadFunction_=t,this.changed()},e}(ip.a),Q0=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),t1=function(t){function e(e){var r=this,n=void 0!==e.crossOrigin?e.crossOrigin:null,i=void 0!==e.imageLoadFunction?e.imageLoadFunction:ip.b,o=void 0===e.imageSmoothing||e.imageSmoothing;return void 0!==e.interpolate&&(o=e.interpolate),(r=t.call(this,{attributions:e.attributions,interpolate:o,projection:Object(u.o)(e.projection)})||this).url_=e.url,r.imageExtent_=e.imageExtent,r.image_=new op.a(r.imageExtent_,void 0,1,r.url_,n,i),r.imageSize_=e.imageSize?e.imageSize:null,r.image_.addEventListener(Di.a.CHANGE,r.handleImageChange.bind(r)),r}return Q0(e,t),e.prototype.getImageExtent=function(){return this.imageExtent_},e.prototype.getImageInternal=function(t,e,r,n){return Object(mt.G)(t,this.image_.getExtent())?this.image_:null},e.prototype.getUrl=function(){return this.url_},e.prototype.handleImageChange=function(e){if(this.image_.getState()==$g.a.LOADED){var r=this.image_.getExtent(),n=this.image_.getImage(),i=void 0,o=void 0;this.imageSize_?(i=this.imageSize_[0],o=this.imageSize_[1]):(i=n.width,o=n.height);var a=Object(mt.F)(r),s=Object(mt.A)(r),l=a/i,u=s/o,c=i,h=o;if(l>u?c=Math.round(a/u):h=Math.round(s/l),c!==i||h!==o){var f=Object(oi.a)(c,h);this.getInterpolate()||Object(ii.a)(f,_$.a);var p=f.canvas;f.drawImage(n,0,0,i,o,0,0,p.width,p.height),this.image_.setImage(p)}}t.prototype.handleImageChange.call(this,e)},e}(ip.a),e1=r(79),r1=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),n1=['Map tiles by Stamen Design, under CC BY 3.0.',ej],i1={terrain:{extension:"jpg",opaque:!0},"terrain-background":{extension:"jpg",opaque:!0},"terrain-labels":{extension:"png",opaque:!1},"terrain-lines":{extension:"png",opaque:!1},"toner-background":{extension:"png",opaque:!0},toner:{extension:"png",opaque:!0},"toner-hybrid":{extension:"png",opaque:!1},"toner-labels":{extension:"png",opaque:!1},"toner-lines":{extension:"png",opaque:!1},"toner-lite":{extension:"png",opaque:!0},watercolor:{extension:"jpg",opaque:!0}},o1={terrain:{minZoom:0,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:0,maxZoom:18}},a1=function(t){function e(e){var r=void 0===e.imageSmoothing||e.imageSmoothing;void 0!==e.interpolate&&(r=e.interpolate);var n=e.layer.indexOf("-"),i=-1==n?e.layer:e.layer.slice(0,n),o=o1[i],a=i1[e.layer],s=void 0!==e.url?e.url:"https://stamen-tiles-{a-d}.a.ssl.fastly.net/"+e.layer+"/{z}/{x}/{y}."+a.extension;return t.call(this,{attributions:n1,cacheSize:e.cacheSize,crossOrigin:"anonymous",interpolate:r,maxZoom:null!=e.maxZoom?e.maxZoom:o.maxZoom,minZoom:null!=e.minZoom?e.minZoom:o.minZoom,opaque:a.opaque,reprojectionErrorThreshold:e.reprojectionErrorThreshold,tileLoadFunction:e.tileLoadFunction,transition:e.transition,url:s,wrapX:e.wrapX,zDirection:e.zDirection})||this}return r1(e,t),e}(Fk),s1=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),l1=function(t){function e(e){var r=this,n=e||{},i=void 0===n.imageSmoothing||n.imageSmoothing;return void 0!==n.interpolate&&(i=n.interpolate),(r=t.call(this,{attributions:n.attributions,cacheSize:n.cacheSize,crossOrigin:n.crossOrigin,interpolate:i,projection:n.projection,reprojectionErrorThreshold:n.reprojectionErrorThreshold,tileGrid:n.tileGrid,tileLoadFunction:n.tileLoadFunction,url:n.url,urls:n.urls,wrapX:void 0===n.wrapX||n.wrapX,transition:n.transition,zDirection:n.zDirection})||this).params_=n.params||{},r.hidpi_=void 0===n.hidpi||n.hidpi,r.tmpExtent_=Object(mt.k)(),r.setKey(r.getKeyForParams_()),r}return s1(e,t),e.prototype.getKeyForParams_=function(){var t=0,e=[];for(var r in this.params_)e[t++]=r+"-"+this.params_[r];return e.join("/")},e.prototype.getParams=function(){return this.params_},e.prototype.getRequestUrl_=function(t,e,r,n,i,o){var a=this.urls;if(a){var s,l=i.getCode().split(/:(?=\d+$)/).pop();if(o.SIZE=e[0]+","+e[1],o.BBOX=r.join(","),o.BBOXSR=l,o.IMAGESR=l,o.DPI=Math.round(o.DPI?o.DPI*n:90*n),1==a.length)s=a[0];else s=a[Object(mo.g)(Object(Tf.f)(t),a.length)];return Yf(s.replace(/MapServer\/?$/,"MapServer/export").replace(/ImageServer\/?$/,"ImageServer/exportImage"),o)}},e.prototype.getTilePixelRatio=function(t){return this.hidpi_?t:1},e.prototype.updateParams=function(t){Object(ii.a)(this.params_,t),this.setKey(this.getKeyForParams_())},e.prototype.tileUrlFunction=function(t,e,r){var n=this.getTileGrid();if(n||(n=this.getTileGridForProjection(r)),!(n.getResolutions().length<=t[0])){1==e||this.hidpi_||(e=1);var i=n.getTileCoordExtent(t,this.tmpExtent_),o=Object(Aa.d)(n.getTileSize(t[0]),this.tmpSize);1!=e&&(o=Object(Aa.c)(o,e,this.tmpSize));var a={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};return Object(ii.a)(a,this.params_),this.getRequestUrl_(t,o,i,e,r,a)}},e}(Uf),u1=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),c1=function(t){function e(e){var r=this,n=e||{};return r=t.call(this,{opaque:!1,projection:n.projection,tileGrid:n.tileGrid,wrapX:void 0===n.wrapX||n.wrapX,zDirection:n.zDirection,url:n.template||"z:{z} x:{x} y:{y}",tileLoadFunction:function(t,e){var n=t.getTileCoord()[0],i=Object(Aa.d)(r.tileGrid.getTileSize(n)),o=Object(oi.a)(i[0],i[1]);o.strokeStyle="grey",o.strokeRect(.5,.5,i[0]+.5,i[1]+.5),o.fillStyle="grey",o.strokeStyle="white",o.textAlign="center",o.textBaseline="middle",o.font="24px sans-serif",o.lineWidth=4,o.strokeText(e,i[0]/2,i[1]/2,i[0]),o.fillText(e,i[0]/2,i[1]/2,i[0]),t.setImage(o.canvas)}})||this}return u1(e,t),e}(Fk),h1=function(){var t=function(e,r){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])})(e,r)};return function(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}(),f1=function(t){function e(e,r,n,i,o,a){var s=t.call(this,e,r)||this;return s.src_=n,s.extent_=i,s.preemptive_=o,s.grid_=null,s.keys_=null,s.data_=null,s.jsonp_=a,s}return h1(e,t),e.prototype.getImage=function(){return null},e.prototype.getData=function(t){if(!this.grid_||!this.keys_)return null;var e=(t[0]-this.extent_[0])/(this.extent_[2]-this.extent_[0]),r=(t[1]-this.extent_[1])/(this.extent_[3]-this.extent_[1]),n=this.grid_[Math.floor((1-r)*this.grid_.length)];if("string"!=typeof n)return null;var i=n.charCodeAt(Math.floor(e*n.length));i>=93&&i--,i>=35&&i--;var o=null;if((i-=32)in this.keys_){var a=this.keys_[i];o=this.data_&&a in this.data_?this.data_[a]:a}return o},e.prototype.forDataAtCoordinate=function(t,e,r){this.state==Ef.a.EMPTY&&!0===r?(this.state=Ef.a.IDLE,Object(Ci.b)(this,Di.a.CHANGE,(function(r){e(this.getData(t))}),this),this.loadInternal_()):!0===r?setTimeout(function(){e(this.getData(t))}.bind(this),0):e(this.getData(t))},e.prototype.getKey=function(){return this.src_},e.prototype.handleError_=function(){this.state=Ef.a.ERROR,this.changed()},e.prototype.handleLoad_=function(t){this.grid_=t.grid,this.keys_=t.keys,this.data_=t.data,this.state=Ef.a.LOADED,this.changed()},e.prototype.loadInternal_=function(){if(this.state==Ef.a.IDLE)if(this.state=Ef.a.LOADING,this.jsonp_)Object(rJ.a)(this.src_,this.handleLoad_.bind(this),this.handleError_.bind(this));else{var t=new XMLHttpRequest;t.addEventListener("load",this.onXHRLoad_.bind(this)),t.addEventListener("error",this.onXHRError_.bind(this)),t.open("GET",this.src_),t.send()}},e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleError_()}this.handleLoad_(r)}else this.handleError_()},e.prototype.onXHRError_=function(t){this.handleError_()},e.prototype.load=function(){this.preemptive_?this.loadInternal_():this.setState(Ef.a.EMPTY)},e}(vj.a),p1=function(t){function e(e){var r=t.call(this,{projection:Object(u.o)("EPSG:3857"),state:Qn.a.LOADING,zDirection:e.zDirection})||this;if(r.preemptive_=void 0===e.preemptive||e.preemptive,r.tileUrlFunction_=Mf,r.template_=void 0,r.jsonp_=e.jsonp||!1,e.url)if(r.jsonp_)Object(rJ.a)(e.url,r.handleTileJSONResponse.bind(r),r.handleTileJSONError.bind(r));else{var n=new XMLHttpRequest;n.addEventListener("load",r.onXHRLoad_.bind(r)),n.addEventListener("error",r.onXHRError_.bind(r)),n.open("GET",e.url),n.send()}else e.tileJSON?r.handleTileJSONResponse(e.tileJSON):Object(Ui.a)(!1,51);return r}return h1(e,t),e.prototype.onXHRLoad_=function(t){var e=t.target;if(!e.status||e.status>=200&&e.status<300){var r=void 0;try{r=JSON.parse(e.responseText)}catch(t){return void this.handleTileJSONError()}this.handleTileJSONResponse(r)}else this.handleTileJSONError()},e.prototype.onXHRError_=function(t){this.handleTileJSONError()},e.prototype.getTemplate=function(){return this.template_},e.prototype.forDataAtCoordinateAndResolution=function(t,e,r,n){if(this.tileGrid){var i=this.tileGrid.getZForResolution(e,this.zDirection),o=this.tileGrid.getTileCoordForCoordAndZ(t,i);this.getTile(o[0],o[1],o[2],1,this.getProjection()).forDataAtCoordinate(t,r,n)}else!0===n?setTimeout((function(){r(null)}),0):r(null)},e.prototype.handleTileJSONError=function(){this.setState(Qn.a.ERROR)},e.prototype.handleTileJSONResponse=function(t){var e,r=Object(u.o)("EPSG:4326"),n=this.getProjection();if(void 0!==t.bounds){var i=Object(u.r)(r,n);e=Object(mt.a)(t.bounds,i)}var o=Object(Ff.c)(n),a=t.minzoom||0,s=t.maxzoom||22,l=Object(Ff.b)({extent:o,maxZoom:s,minZoom:a});this.tileGrid=l,this.template_=t.template;var c=t.grids;if(c){if(this.tileUrlFunction_=Rf(c,l),void 0!==t.attribution){var h=void 0!==e?e:o;this.setAttributions((function(e){return Object(mt.G)(h,e.extent)?[t.attribution]:null}))}this.setState(Qn.a.READY)}else this.setState(Qn.a.ERROR)},e.prototype.getTile=function(t,e,r,n,i){var o=Object(Tf.e)(t,e,r);if(this.tileCache.containsKey(o))return this.tileCache.get(o);var a=[t,e,r],s=this.getTileCoordForTileUrlFunction(a,i),l=this.tileUrlFunction_(s,n,i),u=new f1(a,void 0!==l?Ef.a.IDLE:Ef.a.EMPTY,void 0!==l?l:"",this.tileGrid.getTileCoordExtent(a),this.preemptive_,this.jsonp_);return this.tileCache.set(o,u),u},e.prototype.useTile=function(t,e,r){var n=Object(Tf.e)(t,e,r);this.tileCache.containsKey(n)&&this.tileCache.get(n)},e}(Cf.b);var d1=window.M={},g1=window.ol={};d1.ClusteredFeature=EG,d1.Control=yu,d1.Feature=mG,d1.Filter=Vx,d1.Label=WP,d1.Layer=Lc,d1.Map=$F,d1.Object=il,d1.Parameters=ZP,d1.Plugin=LG,d1.Popup=Ox,d1.RenderFeature=rR,d1.Style=Em,d1.addProxyException=function(t){var e=new URL(t).origin;-1===tD.indexOf(e)&&tD.push(e)},d1.config=function t(e,r){t[e]=r},d1.control={},d1.control.GetFeatureInfo=cP,d1.control.LayerSwitcher=Hw,d1.control.Location=CE,d1.control.Mouse=TS,d1.control.Navtoolbar=hI,d1.control.OverviewMap=QS,d1.control.Panzoom=PI,d1.control.Panzoombar=Ru,d1.control.Rotate=_O,d1.control.Rotate.onClick=gO,d1.control.Rotate.onMouseDown=pO,d1.control.Rotate.onMouseMove=yO,d1.control.Rotate.onMouseUp=dO,d1.control.Scale=HE,d1.control.ScaleLine=QO,d1.control.WMCSelector=Ld,d1.dialog={},d1.dialog.error=Ux,d1.dialog.info=Gx,d1.dialog.show=Dx,d1.dialog.success=Bx,d1.evt={},d1.evt.ACTIVATED=Dl,d1.evt.ADDED_GEOPACKAGE="added:geopackage",d1.evt.ADDED_GEOPACKAGE_TILE="added:geopackagetile",d1.evt.ADDED_GEOPACKAGE_VECTOR="added:geopackagevector",d1.evt.ADDED_KML=Ll,d1.evt.ADDED_LAYER=Pl,d1.evt.ADDED_MBTILES="added:mbtiles",d1.evt.ADDED_MBTILES_VECTOR="added:mbtilesvector",d1.evt.ADDED_TO_MAP=Cl,d1.evt.ADDED_TO_PANEL=Tl,d1.evt.ADDED_VECTOR_TILE=Al,d1.evt.ADDED_WFS=Nl,d1.evt.ADDED_WMC=Rl,d1.evt.ADDED_WMS=Ml,d1.evt.ADDED_WMTS=Fl,d1.evt.CHANGE=Zl,d1.evt.CHANGE_PROJ=Jl,d1.evt.CHANGE_ROTATION=tu,d1.evt.CHANGE_STYLE=$l,d1.evt.CHANGE_WMC=Kl,d1.evt.CHANGE_ZOOM=Ql,d1.evt.CLICK=eu,d1.evt.COMPLETED=Hl,d1.evt.DEACTIVATED=Gl,d1.evt.DESTROY=zl,d1.evt.DOUBLE_CLICK="doubleclick",d1.evt.EventsManager=rl,d1.evt.HIDE=Bl,d1.evt.HOVER_FEATURES=Yl,d1.evt.LEAVE_FEATURES=Wl,d1.evt.LOAD=Xl,d1.evt.LOAD_LAYERS="load:layers",d1.evt.Listener=tl,d1.evt.MOVE=ru,d1.evt.POPUP_ADDED=nu,d1.evt.POPUP_ADDED_TAB=ou,d1.evt.POPUP_REMOVED=iu,d1.evt.POPUP_REMOVED_TAB=au,d1.evt.REMOVED_FROM_MAP=jl,d1.evt.REMOVED_LAYER=kl,d1.evt.SELECT_FEATURES=Vl,d1.evt.SHOW=Ul,d1.evt.UNSELECT_FEATURES=ql,d1.exception=_l,d1.facade={},d1.facade.Base=Il,d1.filter=YG,d1.filter.AND=function(t){var e="",r=t.length;return t.forEach((function(t,n){e+="(".concat(t.toCQL(),")"),ne}),{cqlFilter:"".concat(t," > '").concat(e,"'")})},d1.filter.GTE=function(t,e){return new GG((function(r){return null!=r.getAttribute(t)&&r.getAttribute(t)>=e}),{cqlFilter:"".concat(t," >= '").concat(e,"'")})},d1.filter.LIKE=function(t,e){return new GG((function(r){return r.getAttribute(t).toString().match(new RegExp(e))}),{cqlFilter:"".concat(t," LIKE '%").concat(e,"%'")})},d1.filter.LT=function(t,e){return new GG((function(r){return null!=r.getAttribute(t)&&r.getAttribute(t)/g,">").replace(/'/g,""").replace(/'/g,"'").replace(/\//g,"/")},d1.utils.extend=GD,d1.utils.extendsObj=HD,d1.utils.fillResolutions=RD,d1.utils.generateColorScale=WD,d1.utils.generateIntervals=ZD,d1.utils.generateRandom=CD,d1.utils.generateResolutionsFromExtent=MD,d1.utils.generateResolutionsFromScales=function(t,e,r,n){var i=LD(t,n),o=LD(e,n);return RD(i,o,r)},d1.utils.getEnvolvedExtent=aG,d1.utils.getImageSize=JD,d1.utils.getOpacityFromRgba=function(t){var e,r=/^rgba\s*\((\s*\d+\s*,){3}\s*([\d.]+)\s*\)$/;if(r.test(t)){e=t.replace(r,"$2");try{e=parseFloat(e)}catch(t){throw t}}return e},d1.utils.getParameterValue=SD,d1.utils.getResolutionFromScale=LD,d1.utils.getRgba=function(t,e){return l()(t).alpha(e).css()},d1.utils.getScaleFromResolution=ND,d1.utils.getSystem=sG,d1.utils.getTextFromHtml=YD,d1.utils.getWMSGetCapabilitiesUrl=TD,d1.utils.getWMTSGetCapabilitiesUrl=PD,d1.utils.htmlToString=function(t){var e;if(!_D(t)){var r=document.createElement("div");r.appendChild(t),e=r.innerHTML}return e},d1.utils.includes=DD,d1.utils.inverseColor=XD,d1.utils.isArray=mD,d1.utils.isBoolean=gD,d1.utils.isDynamic=nG,d1.utils.isFunction=vD,d1.utils.isGeometryType=VD,d1.utils.isNull=yD,d1.utils.isNullOrEmpty=_D,d1.utils.isNumber=ED,d1.utils.isObject=bD,d1.utils.isPositiveNumber=function(t){return ED(t)&&t>0},d1.utils.isString=xD,d1.utils.isUndefined=dD,d1.utils.isUrl=wD,d1.utils.normalize=OD,d1.utils.rgbToHex=function(t){var e;try{e=l()(t).hex()}catch(t){throw t}return e},d1.utils.rgbaToHex=function(t){var e;try{e=l()(t).hex()}catch(t){throw t}return e},d1.utils.sameUrl=zD,d1.utils.setDynamicLegend=function(t){iG=t},d1.utils.setEquals=function(t,e){var r=!1;return t.length===e.length&&(r=t.every((function(t){return e.some((function(e){return e.equals(t)}))}))),r},d1.utils.stringToHtml=AD,d1.utils.stringifyFunctions=$D,d1.utils.styleComparator=KD,d1.version=eD,d1.window=rx,g1.AssertionError=Ri.a,g1.Collection=Fi,g1.Feature=Wc,g1.Geolocation=sE,g1.Kinetic=Us,g1.Map=Js,g1.MapBrowserEvent=Hi,g1.Object=ei.a,g1.Observable=ag.a,g1.Observable.unByKey=ag.b,g1.Overlay=Qb,g1.PluggableMap=Da,g1.View=Na,g1.View=Na,g1.array={},g1.array.stableSort=h.k,g1.color={},g1.color.asArray=Bn.a,g1.color.asString=Bn.b,g1.colorlike={},g1.colorlike.asColorLike=ay,g1.control={},g1.control.Attribution=za,g1.control.Control=Ua,g1.control.FullScreen=oH,g1.control.MousePosition=oS,g1.control.OverviewMap=NS,g1.control.Rotate=qa,g1.control.ScaleLine=TO,g1.control.Zoom=Wa,g1.control.ZoomSlider=cl,g1.control.ZoomToExtent=sH,g1.control.defaults=Xa,g1.coordinate={},g1.coordinate.add=Wn.a,g1.coordinate.createStringXY=Wn.d,g1.coordinate.format=Wn.h,g1.coordinate.rotate=Wn.j,g1.coordinate.toStringHDMS=Wn.n,g1.coordinate.toStringXY=Wn.o,g1.easing={},g1.easing.easeIn=So.easeIn,g1.easing.easeOut=So.easeOut,g1.easing.inAndOut=So.inAndOut,g1.easing.linear=So.linear,g1.easing.upAndDown=So.upAndDown,g1.events={},g1.events.condition={},g1.events.condition.altKeyOnly=is,g1.events.condition.altShiftKeysOnly=os,g1.events.condition.always=ls,g1.events.condition.click=function(t){return t.type==Zi.CLICK},g1.events.condition.doubleClick=function(t){return t.type==Zi.DBLCLICK},g1.events.condition.focus=as,g1.events.condition.mouseOnly=gs,g1.events.condition.never=cs,g1.events.condition.noModifierKeys=fs,g1.events.condition.penOnly=function(t){var e=t.originalEvent;return Object(Ui.a)(void 0!==e,56),"pen"===e.pointerType},g1.events.condition.platformModifierKeyOnly=function(t){var e=t.originalEvent;return!e.altKey&&(ni.d?e.metaKey:e.ctrlKey)&&!e.shiftKey},g1.events.condition.pointerMove=function(t){return"pointermove"==t.type},g1.events.condition.primaryAction=ys,g1.events.condition.shiftKeyOnly=ps,g1.events.condition.singleClick=hs,g1.events.condition.targetNotEditable=ds,g1.events.condition.touchOnly=function(t){var e=t.originalEvent;return Object(Ui.a)(void 0!==e,56),"touch"===e.pointerType},g1.extent={},g1.extent.applyTransform=mt.a,g1.extent.boundingExtent=mt.c,g1.extent.buffer=mt.d,g1.extent.containsCoordinate=mt.g,g1.extent.containsExtent=mt.h,g1.extent.containsXY=mt.i,g1.extent.createEmpty=mt.k,g1.extent.equals=mt.p,g1.extent.extend=mt.q,g1.extent.getArea=mt.u,g1.extent.getBottomLeft=mt.v,g1.extent.getBottomRight=mt.w,g1.extent.getCenter=mt.x,g1.extent.getHeight=mt.A,g1.extent.getIntersection=mt.B,g1.extent.getSize=mt.C,g1.extent.getTopLeft=mt.D,g1.extent.getTopRight=mt.E,g1.extent.getWidth=mt.F,g1.extent.intersects=mt.G,g1.extent.isEmpty=mt.I,g1.featureloader={},g1.featureloader.setWithCredentials=function(t){Eg=t},g1.featureloader.xhr=Sg,g1.format={},g1.format.EsriJSON=gH,g1.format.Feature=RI,g1.format.GML=VN,g1.format.GML2=VI,g1.format.GML3=XI,g1.format.GML32=KI,g1.format.GMLBase=GI,g1.format.GPX=JH,g1.format.GeoJSON=cN,g1.format.IGC=aZ,g1.format.IIIFInfo=yZ,g1.format.KML=RM,g1.format.MVT=Wj,g1.format.OSMXML=OZ,g1.format.Polyline=MZ,g1.format.Polyline.decodeDeltas=TZ,g1.format.Polyline.decodeFloats=RZ,g1.format.Polyline.encodeDeltas=CZ,g1.format.Polyline.encodeFloats=PZ,g1.format.TopoJSON=BZ,g1.format.WFS=GT,g1.format.WFS.writeFilter=function(t,e){var r=e||"1.1.0",n=p(DT(r),"Filter"),i={node:n};return Object(ii.a)(i,{version:r,filter:t}),wT(n,t,[i]),n},g1.format.WKB=rK,g1.format.WKT=gU,g1.format.WMSCapabilities=of,g1.format.WMSGetFeatureInfo=iK,g1.format.WMTSCapabilities=kt,g1.format.filter={},g1.format.filter.Bbox=nC,g1.format.filter.Contains=sC,g1.format.filter.DWithin=uC,g1.format.filter.Disjoint=hC,g1.format.filter.During=gC,g1.format.filter.EqualTo=vC,g1.format.filter.GreaterThan=xC,g1.format.filter.GreaterThanOrEqualTo=EC,g1.format.filter.Intersects=SC,g1.format.filter.IsBetween=CC,g1.format.filter.IsLike=PC,g1.format.filter.IsNull=LC,g1.format.filter.LessThan=NC,g1.format.filter.LessThanOrEqualTo=kC,g1.format.filter.Not=FC,g1.format.filter.NotEqualTo=GC,g1.format.filter.Or=BC,g1.format.filter.Within=qC,g1.format.filter.and=YC,g1.format.filter.bbox=WC,g1.format.filter.between=function(t,e,r){return new CC(t,e,r)},g1.format.filter.contains=function(t,e,r){return new sC(t,e,r)},g1.format.filter.disjoint=function(t,e,r){return new hC(t,e,r)},g1.format.filter.during=function(t,e,r){return new gC(t,e,r)},g1.format.filter.dwithin=function(t,e,r,n,i){return new uC(t,e,r,n,i)},g1.format.filter.equalTo=function(t,e,r){return new vC(t,e,r)},g1.format.filter.greaterThan=function(t,e){return new xC(t,e)},g1.format.filter.greaterThanOrEqualTo=function(t,e){return new EC(t,e)},g1.format.filter.intersects=function(t,e,r){return new SC(t,e,r)},g1.format.filter.isNull=function(t){return new LC(t)},g1.format.filter.lessThan=function(t,e){return new NC(t,e)},g1.format.filter.lessThanOrEqualTo=function(t,e){return new kC(t,e)},g1.format.filter.like=function(t,e,r,n,i,o){return new PC(t,e,r,n,i,o)},g1.format.filter.not=function(t){return new FC(t)},g1.format.filter.notEqualTo=function(t,e,r){return new GC(t,e,r)},g1.format.filter.or=function(t){var e=[null].concat(Array.prototype.slice.call(arguments));return new(Function.prototype.bind.apply(BC,e))},g1.format.filter.within=function(t,e,r){return new qC(t,e,r)},g1.geom={},g1.geom.Circle=dh,g1.geom.Geometry=ko,g1.geom.GeometryCollection=hh,g1.geom.LineString=Qc,g1.geom.LinearRing=ia,g1.geom.MultiLineString=eh,g1.geom.MultiPoint=Hc,g1.geom.MultiPolygon=ih,g1.geom.Point=aa,g1.geom.Polygon=Oa,g1.geom.Polygon.circular=Sa,g1.geom.Polygon.fromCircle=Ca,g1.geom.Polygon.fromExtent=Ia,g1.geom.SimpleGeometry=Do,g1.has={},g1.has.DEVICE_PIXEL_RATIO=ni.a,g1.interaction={},g1.interaction.DoubleClickZoom=Qa,g1.interaction.DragAndDrop=lK,g1.interaction.DragBox=Ps,g1.interaction.DragPan=_s,g1.interaction.DragRotate=bs,g1.interaction.DragRotateAndZoom=cK,g1.interaction.DragZoom=Ls,g1.interaction.Draw=bK,g1.interaction.Draw.createBox=function(){return function(t,e,r){var n=Object(mt.c)([t[0],t[t.length-1]].map((function(t){return Object(u.l)(t,r)}))),i=[[Object(mt.v)(n),Object(mt.w)(n),Object(mt.E)(n),Object(mt.D)(n),Object(mt.v)(n)]],o=e;o?o.setCoordinates(i):o=new Oa(i);var a=Object(u.s)();return a&&o.transform(r,a),o}},g1.interaction.Draw.createRegularPolygon=function(t,e){return function(r,n,i){var o=Object(u.l)(r[0],i),a=Object(u.l)(r[r.length-1],i),s=Math.sqrt(Object(Wn.l)(o,a)),l=n||Ca(new dh(o),t),c=e;if(!e&&0!==e){var h=a[0]-o[0],f=a[1]-o[1];c=Math.atan2(f,h)}Ta(l,o,s,c);var p=Object(u.s)();return p&&l.transform(i,p),l}},g1.interaction.Extent=CK,g1.interaction.Interaction=Ja,g1.interaction.KeyboardPan=Fs,g1.interaction.KeyboardZoom=Gs,g1.interaction.Modify=DK,g1.interaction.MouseWheelZoom=qs,g1.interaction.PinchRotate=Ws,g1.interaction.PinchZoom=Hs,g1.interaction.Pointer=rs,g1.interaction.Select=Jv,g1.interaction.Snap=zK,g1.interaction.Translate=HK,g1.interaction.defaults=Zs,g1.layer={},g1.layer.Base=Gi.a,g1.layer.BaseImage=ZK.a,g1.layer.BaseTile=KK.a,g1.layer.BaseVector=X_,g1.layer.Graticule=eJ,g1.layer.Group=qi,g1.layer.Heatmap=LB,g1.layer.Image=Nc.a,g1.layer.Layer=Yn.a,g1.layer.MapboxVector=s$,g1.layer.Tile=Mc.a,g1.layer.Vector=jv,g1.layer.VectorImage=p$,g1.layer.VectorTile=Dj,g1.layer.VectorTileRenderType={},g1.layer.VectorTileRenderType.HYBRID=void 0,g1.layer.VectorTileRenderType.IMAGE=void 0,g1.layer.VectorTileRenderType.VECTOR=void 0,g1.layer.WebGLTile=wQ,g1.loadingstrategy={},g1.loadingstrategy.all=_g,g1.loadingstrategy.bbox=function(t,e){return[t]},g1.loadingstrategy.tile=function(t){return function(e,r,n){var i=t.getZForResolution(Object(u.n)(r,n)),o=t.getTileRangeForExtentAndZ(Object(u.m)(e,n),i),a=[],s=[i,0,0];for(s[1]=o.minX;s[1]<=o.maxX;++s[1])for(s[2]=o.minY;s[2]<=o.maxY;++s[2])a.push(Object(u.x)(t.getTileCoordExtent(s),n));return a}},g1.proj={},g1.proj.Projection=Tn.a,g1.proj.Units=Pn.b,g1.proj.Units.METERS_PER_UNIT=Pn.a,g1.proj.addCoordinateTransforms=u.c,g1.proj.addEquivalentProjections=u.d,g1.proj.addProjection=u.e,g1.proj.clearUserProjection=u.f,g1.proj.equivalent=u.j,g1.proj.fromLonLat=u.k,g1.proj.get=u.o,g1.proj.getPointResolution=u.p,g1.proj.getTransform=u.q,g1.proj.getUserProjection=u.s,g1.proj.proj4={},g1.proj.proj4.register=Ln,g1.proj.setUserProjection=u.u,g1.proj.toLonLat=u.v,g1.proj.transform=u.z,g1.proj.transformExtent=u.A,g1.proj.useGeographic=u.B,g1.render={},g1.render.Feature={},g1.render.Feature.toFeature=function(t,e){var r=t.getId(),n=sh(t),i=t.getProperties(),o=new Wc;return void 0!==e&&o.setGeometryName(e),o.setGeometry(n),void 0!==r&&o.setId(r),o.setProperties(i,!0),o},g1.render.Feature.toGeometry=sh,g1.render.VectorContext=oy,g1.render.canvas={},g1.render.canvas.labelCache=yi,g1.render.getRenderPixel=function(t,e){return Object(Un.a)(t.inversePixelTransform,e.slice(0))},g1.render.getVectorContext=wy,g1.render.toContext=xy,g1.renderer={},g1.renderer.Composite=Pi,g1.renderer.canvas={},g1.renderer.canvas.ImageLayer=l$.a,g1.renderer.canvas.TileLayer=Tj.a,g1.renderer.canvas.VectorImageLayer=h$,g1.renderer.canvas.VectorLayer=Av,g1.renderer.canvas.VectorTileLayer=kj,g1.renderer.webgl={},g1.renderer.webgl.PointsLayer=SB,g1.renderer.webgl.TileLayer=q$,g1.size={},g1.size.toSize=Aa.d,g1.source={},g1.source.BingMaps=OQ,g1.source.CartoDB=IQ,g1.source.Cluster=Rg,g1.source.DataTile=TQ,g1.source.GeoTIFF=D0,g1.source.IIIF=W0,g1.source.Image=ip.a,g1.source.ImageArcGISRest=H0,g1.source.ImageCanvas=K0,g1.source.ImageMapGuide=$0,g1.source.ImageStatic=t1,g1.source.ImageWMS=lp,g1.source.OSM=rj,g1.source.OSM.ATTRIBUTION=ej,g1.source.Raster=e1.a,g1.source.Source=cg.a,g1.source.Stamen=a1,g1.source.Tile=Cf.b,g1.source.TileArcGISRest=l1,g1.source.TileDebug=c1,g1.source.TileImage=Uf,g1.source.TileJSON=iJ,g1.source.TileWMS=Hf,g1.source.UTFGrid=p1,g1.source.Vector=Tg,g1.source.VectorTile=Ij,g1.source.WMSServerType={},g1.source.WMSServerType.CARMENTA_SERVER=void 0,g1.source.WMSServerType.GEOSERVER=void 0,g1.source.WMSServerType.MAPSERVER=void 0,g1.source.WMSServerType.QGIS=void 0,g1.source.WMTS=_k,g1.source.WMTS.optionsFromCapabilities=vk,g1.source.XYZ=Fk,g1.source.Zoomify=V0,g1.source.sourcesFromTileGrid=function(t,e){var r=new d$.a(32),n=t.getExtent();return function(i,o){r.expireCache(),n&&(i=Object(mt.B)(n,i));var a=t.getZForResolution(o),s=[];return t.forEachTileCoord(i,a,(function(t){var n=t.toString();if(!r.containsKey(n)){var i=e(t);r.set(n,i)}s.push(r.get(n))})),s}},g1.sphere={},g1.sphere.getArea=xa.a,g1.sphere.getDistance=xa.b,g1.sphere.getLength=xa.c,g1.style={},g1.style.Circle=Yy,g1.style.Fill=zg,g1.style.Icon=iy,g1.style.IconAnchorUnits={},g1.style.IconAnchorUnits.FRACTION=void 0,g1.style.IconAnchorUnits.PIXELS=void 0,g1.style.IconImageCache={},g1.style.IconImageCache.shared=qn,g1.style.IconOrigin={},g1.style.IconOrigin.BOTTOM_LEFT=void 0,g1.style.IconOrigin.BOTTOM_RIGHT=void 0,g1.style.IconOrigin.TOP_LEFT=void 0,g1.style.IconOrigin.TOP_RIGHT=void 0,g1.style.Image=Qg,g1.style.RegularShape=Vy,g1.style.Stroke=Bg,g1.style.Style=$y,g1.style.Text=Yg,g1.tilegrid={},g1.tilegrid.TileGrid=Ac.a,g1.tilegrid.WMTS=gk,g1.tilegrid.WMTS.createFromCapabilitiesMatrixSet=yk,g1.tilegrid.createXYZ=Ff.b,g1.transform={},g1.transform.composeCssTransform=Un.c,g1.util={},g1.util.getUid=Gn.c,g1.webgl={},g1.webgl.ARRAY_BUFFER=zU,g1.webgl.Buffer=KU,g1.webgl.DYNAMIC_DRAW=YU,g1.webgl.ELEMENT_ARRAY_BUFFER=VU,g1.webgl.Helper=yB,g1.webgl.Helper.computeAttributesStride=dB,g1.webgl.PostProcessingPass=eB,g1.webgl.RenderTarget=wB,g1.webgl.STATIC_DRAW=qU,g1.webgl.STREAM_DRAW=35040,g1.xml={},g1.xml.getAllTextContent=d,g1.xml.parse=m,g1.xml.registerDocument=function(t){k=t},g1.xml.registerXMLSerializer=function(t){A=t},window.jsts=r(164),window.Handlebars=r(62),d1.plugin={}},,,function(t,e,r){"use strict";r.r(e),function(t){r.d(e,"create",(function(){return o}));var n=r(125),i=r.n(n);function o(){const e='function e(e,t,r,n,i,a,o){try{var s=e[a](o),f=s.value}catch(e){return void r(e)}s.done?t(f):Promise.resolve(f).then(n,i)}function t(t){return function(){var r=this,n=arguments;return new Promise((function(i,a){var o=t.apply(r,n);function s(t){e(o,i,a,s,f,"next",t)}function f(t){e(o,i,a,s,f,"throw",t)}s(void 0)}))}}function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}var n={exports:{}};!function(e){var t=function(e){var t,n=Object.prototype,i=n.hasOwnProperty,a="function"==typeof Symbol?Symbol:{},o=a.iterator||"@@iterator",s=a.asyncIterator||"@@asyncIterator",f=a.toStringTag||"@@toStringTag";function l(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,r){return e[t]=r}}function u(e,t,r,n){var i=t&&t.prototype instanceof y?t:y,a=Object.create(i.prototype),o=new T(n||[]);return a._invoke=function(e,t,r){var n=h;return function(i,a){if(n===p)throw new Error("Generator is already running");if(n===m){if("throw"===i)throw a;return E()}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=I(o,r);if(s){if(s===v)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===h)throw n=m,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=p;var f=c(e,t,r);if("normal"===f.type){if(n=r.done?m:d,f.arg===v)continue;return{value:f.arg,done:r.done}}"throw"===f.type&&(n=m,r.method="throw",r.arg=f.arg)}}}(e,r,o),a}function c(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var h="suspendedStart",d="suspendedYield",p="executing",m="completed",v={};function y(){}function w(){}function g(){}var b={};l(b,o,(function(){return this}));var k=Object.getPrototypeOf,x=k&&k(k(D([])));x&&x!==n&&i.call(x,o)&&(b=x);var _=g.prototype=y.prototype=Object.create(b);function A(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function P(e,t){function n(a,o,s,f){var l=c(e[a],e,o);if("throw"!==l.type){var u=l.arg,h=u.value;return h&&"object"===r(h)&&i.call(h,"__await")?t.resolve(h.__await).then((function(e){n("next",e,s,f)}),(function(e){n("throw",e,s,f)})):t.resolve(h).then((function(e){u.value=e,s(u)}),(function(e){return n("throw",e,s,f)}))}f(l.arg)}var a;this._invoke=function(e,r){function i(){return new t((function(t,i){n(e,r,t,i)}))}return a=a?a.then(i,i):i()}}function I(e,r){var n=e.iterator[r.method];if(n===t){if(r.delegate=null,"throw"===r.method){if(e.iterator.return&&(r.method="return",r.arg=t,I(e,r),"throw"===r.method))return v;r.method="throw",r.arg=new TypeError("The iterator does not provide a \'throw\' method")}return v}var i=c(n,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,v;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,v):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}function U(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function S(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(U,this),this.reset(!0)}function D(e){if(e){var r=e[o];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,a=function r(){for(;++n=0;--a){var o=this.tryEntries[a],s=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var f=i.call(o,"catchLoc"),l=i.call(o,"finallyLoc");if(f&&l){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),S(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;S(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:D(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"===("undefined"==typeof globalThis?"undefined":r(globalThis))?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}}(n);var i=n.exports,a=new Map;function o(e,t){Array.isArray(e)||(e=[e]),e.forEach((function(e){return a.set(e,t)}))}function s(e){return f.apply(this,arguments)}function f(){return(f=t(i.mark((function e(t){var r,n;return i.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=a.get(t.Compression)){e.next=3;break}throw new Error("Unknown compression method identifier: ".concat(t.Compression));case 3:return e.next=5,r();case 5:return n=e.sent,e.abrupt("return",new n(t));case 7:case"end":return e.stop()}}),e)})))).apply(this,arguments)}o([void 0,1],(function(){return Promise.resolve().then((function(){return _})).then((function(e){return e.default}))})),o(5,(function(){return Promise.resolve().then((function(){return S})).then((function(e){return e.default}))})),o(6,(function(){throw new Error("old style JPEG compression is not supported.")})),o(7,(function(){return Promise.resolve().then((function(){return L})).then((function(e){return e.default}))})),o([8,32946],(function(){return Promise.resolve().then((function(){return Ne})).then((function(e){return e.default}))})),o(32773,(function(){return Promise.resolve().then((function(){return Ye})).then((function(e){return e.default}))})),o(34887,(function(){return Promise.resolve().then((function(){return ut})).then((function(e){return e.default}))})),o(50001,(function(){return Promise.resolve().then((function(){return dt})).then((function(e){return e.default}))}));var l=globalThis;function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function c(e,t){for(var r=0;r0;i--)e[n+t]+=e[n],n++;r-=t}while(r>0)}function w(e,t,r){for(var n=0,i=e.length,a=i/r;i>t;){for(var o=t;o>0;--o)e[n+t]+=e[n],++n;i-=t}for(var s=e.slice(),f=0;f=e.byteLength);++l){var u=void 0;if(2===t){switch(i[0]){case 8:u=new Uint8Array(e,l*f*r*s,f*r*s);break;case 16:u=new Uint16Array(e,l*f*r*s,f*r*s/2);break;case 32:u=new Uint32Array(e,l*f*r*s,f*r*s/4);break;default:throw new Error("Predictor 2 not allowed with ".concat(i[0]," bits per sample."))}y(u,f)}else 3===t&&w(u=new Uint8Array(e,l*f*r*s,f*r*s),f,s)}return e}l.addEventListener("message",function(){var e=t(i.mark((function e(t){var r,n,a,o,f,u;return i.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=t.data,n=r.id,a=r.fileDirectory,o=r.buffer,e.next=3,s(a);case 3:return f=e.sent,e.next=6,f.decode(a,o);case 6:u=e.sent,l.postMessage({decoded:u,id:n},[u]);case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}());var b=function(){function e(){u(this,e)}var r;return h(e,[{key:"decode",value:(r=t(i.mark((function e(t,r){var n,a,o,s,f;return i.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.decodeBlock(r);case 2:if(n=e.sent,1===(a=t.Predictor||1)){e.next=9;break}return o=!t.StripOffsets,s=o?t.TileWidth:t.ImageWidth,f=o?t.TileLength:t.RowsPerStrip||t.ImageLength,e.abrupt("return",g(n,a,s,f,t.BitsPerSample,t.PlanarConfiguration));case 9:return e.abrupt("return",n);case 10:case"end":return e.stop()}}),e,this)}))),function(e,t){return r.apply(this,arguments)})}]),e}();function k(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=v(e);if(t){var i=v(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return m(this,r)}}var x=function(e){p(r,b);var t=k(r);function r(){return u(this,r),t.apply(this,arguments)}return h(r,[{key:"decodeBlock",value:function(e){return e}}]),r}(),_=Object.freeze({__proto__:null,default:x});function A(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=v(e);if(t){var i=v(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return m(this,r)}}function P(e,t){for(var r=t.length-1;r>=0;r--)e.push(t[r]);return e}function I(e){for(var t=new Uint16Array(4093),r=new Uint8Array(4093),n=0;n<=257;n++)t[n]=4096,r[n]=n;var i=258,a=9,o=0;function s(){i=258,a=9}function f(e){var t=function(e,t,r){var n=t%8,i=Math.floor(t/8),a=8-n,o=t+r-8*(i+1),s=8*(i+2)-(t+r),f=8*(i+2)-t;if(s=Math.max(0,s),i>=e.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;var l=e[i]&Math.pow(2,8-n)-1,u=l<<=r-a;if(i+1>>s;u+=c<<=Math.max(0,r-f)}if(o>8&&i+2>>h}return u}(e,o,a);return o+=a,t}function l(e,n){return r[i]=n,t[i]=e,++i-1}function u(e){for(var n=[],i=e;4096!==i;i=t[i])n.push(r[i]);return n}var c=[];s();for(var h,d=new Uint8Array(e),p=f(d);257!==p;){if(256===p){for(s(),p=f(d);256===p;)p=f(d);if(257===p)break;if(p>256)throw new Error("corrupted code at scanline ".concat(p));P(c,u(p)),h=p}else if(p=Math.pow(2,a)&&(12===a?h=void 0:a++),p=f(d)}return new Uint8Array(c)}var U=function(e){p(r,b);var t=A(r);function r(){return u(this,r),t.apply(this,arguments)}return h(r,[{key:"decodeBlock",value:function(e){return I(e).buffer}}]),r}(),S=Object.freeze({__proto__:null,default:U});function T(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=v(e);if(t){var i=v(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return m(this,r)}}var D=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]);function E(e,t){for(var r=0,n=[],i=16;i>0&&!e[i-1];)--i;n.push({children:[],index:0});for(var a,o=n[0],s=0;s0;)o=n.pop();for(o.index++,n.push(o);n.length<=s;)n.push(a={children:[],index:0}),o.children[o.index]=a.children,o=a;r++}s+10)return m--,p>>m&1;if(255===(p=e[d++])){var t=e[d++];if(t)throw new Error("unexpected marker: ".concat((p<<8|t).toString(16)))}return m=7,p>>>7}function y(e){for(var t,n=e;null!==(t=v());){if("number"==typeof(n=n[t]))return n;if("object"!==r(n))throw new Error("invalid huffman sequence")}return null}function w(e){for(var t=e,r=0;t>0;){var n=v();if(null===n)return;r=r<<1|n,--t}return r}function g(e){var t=w(e);return t>=1<0)b--;else for(var r=o,n=s;r<=n;){var i=y(e.huffmanTableAC),a=15&i,f=i>>4;if(0===a){if(f<15){b=w(f)+(1<>4,0===c)i<15?(b=w(i)+(1<>4;if(0===o){if(s<15)break;i+=16}else t[D[i+=s]]=g(o),i++}};var O,M,C=0;M=1===B?i[0].blocksPerLine*i[0].blocksPerColumn:u*n.mcusPerColumn;for(var L=a||M;C=65488&&O<=65495))break;d+=2}return d-h}function O(e,t){var r=[],n=t.blocksPerLine,i=t.blocksPerColumn,a=n<<3,o=new Int32Array(64),s=new Uint8Array(64);function f(e,r,n){var i,a,o,s,f,l,u,c,h,d,p=t.quantizationTable,m=n;for(d=0;d<64;d++)m[d]=e[d]*p[d];for(d=0;d<8;++d){var v=8*d;0!==m[1+v]||0!==m[2+v]||0!==m[3+v]||0!==m[4+v]||0!==m[5+v]||0!==m[6+v]||0!==m[7+v]?(i=5793*m[0+v]+128>>8,a=5793*m[4+v]+128>>8,o=m[2+v],s=m[6+v],f=2896*(m[1+v]-m[7+v])+128>>8,c=2896*(m[1+v]+m[7+v])+128>>8,l=m[3+v]<<4,h=i-a+1>>1,i=i+a+1>>1,a=h,h=3784*o+1567*s+128>>8,o=1567*o-3784*s+128>>8,s=h,h=f-(u=m[5+v]<<4)+1>>1,f=f+u+1>>1,u=h,h=c+l+1>>1,l=c-l+1>>1,c=h,h=i-s+1>>1,i=i+s+1>>1,s=h,h=a-o+1>>1,a=a+o+1>>1,o=h,h=2276*f+3406*c+2048>>12,f=3406*f-2276*c+2048>>12,c=h,h=799*l+4017*u+2048>>12,l=4017*l-799*u+2048>>12,u=h,m[0+v]=i+c,m[7+v]=i-c,m[1+v]=a+u,m[6+v]=a-u,m[2+v]=o+l,m[5+v]=o-l,m[3+v]=s+f,m[4+v]=s-f):(h=5793*m[0+v]+512>>10,m[0+v]=h,m[1+v]=h,m[2+v]=h,m[3+v]=h,m[4+v]=h,m[5+v]=h,m[6+v]=h,m[7+v]=h)}for(d=0;d<8;++d){var y=d;0!==m[8+y]||0!==m[16+y]||0!==m[24+y]||0!==m[32+y]||0!==m[40+y]||0!==m[48+y]||0!==m[56+y]?(i=5793*m[0+y]+2048>>12,a=5793*m[32+y]+2048>>12,o=m[16+y],s=m[48+y],f=2896*(m[8+y]-m[56+y])+2048>>12,c=2896*(m[8+y]+m[56+y])+2048>>12,l=m[24+y],h=i-a+1>>1,i=i+a+1>>1,a=h,h=3784*o+1567*s+2048>>12,o=1567*o-3784*s+2048>>12,s=h,h=f-(u=m[40+y])+1>>1,f=f+u+1>>1,u=h,h=c+l+1>>1,l=c-l+1>>1,c=h,h=i-s+1>>1,i=i+s+1>>1,s=h,h=a-o+1>>1,a=a+o+1>>1,o=h,h=2276*f+3406*c+2048>>12,f=3406*f-2276*c+2048>>12,c=h,h=799*l+4017*u+2048>>12,l=4017*l-799*u+2048>>12,u=h,m[0+y]=i+c,m[56+y]=i-c,m[8+y]=a+u,m[48+y]=a-u,m[16+y]=o+l,m[40+y]=o-l,m[24+y]=s+f,m[32+y]=s-f):(h=5793*n[d+0]+8192>>14,m[0+y]=h,m[8+y]=h,m[16+y]=h,m[24+y]=h,m[32+y]=h,m[40+y]=h,m[48+y]=h,m[56+y]=h)}for(d=0;d<64;++d){var w=128+(m[d]+8>>4);r[d]=w<0?0:w>255?255:w}}for(var l=0;l>4==0)for(var c=0;c<64;c++){u[D[c]]=e[t++]}else{if(l>>4!=1)throw new Error("DQT: invalid table spec");for(var h=0;h<64;h++){u[D[h]]=r()}}this.quantizationTables[15&l]=u}break;case 65472:case 65473:case 65474:r();for(var d={extended:65473===o,progressive:65474===o,precision:e[t++],scanLines:r(),samplesPerLine:r(),components:{},componentsOrder:[]},p=e[t++],m=void 0,v=0;v>4,w=15&e[t+1],g=e[t+2];d.componentsOrder.push(m),d.components[m]={h:y,v:w,quantizationIdx:g},t+=3}n(d),this.frames.push(d);break;case 65476:for(var b=r(),k=2;k>4==0?this.huffmanTablesDC[15&x]=E(_,I):this.huffmanTablesAC[15&x]=E(_,I)}break;case 65501:r(),this.resetInterval=r();break;case 65498:r();for(var S=e[t++],T=[],O=this.frames[0],M=0;M>4],C.huffmanTableAC=this.huffmanTablesAC[15&L],T.push(C)}var R=e[t++],V=e[t++],G=e[t++],F=B(e,t,O,T,this.resetInterval,R,V,G>>4,15&G);t+=F;break;case 65535:255!==e[t]&&t--;break;default:if(255===e[t-3]&&e[t-2]>=192&&e[t-2]<=254){t-=3;break}throw new Error("unknown JPEG marker ".concat(o.toString(16)))}o=r()}}},{key:"getResult",value:function(){var e=this.frames;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(var t=0;t=0;)e[t]=0}R(new Array(576)),R(new Array(60)),R(new Array(512)),R(new Array(256)),R(new Array(29)),R(new Array(30));var V=function(e,t,r,n){for(var i=65535&e|0,a=e>>>16&65535|0,o=0;0!==r;){r-=o=r>2e3?2e3:r;do{a=a+(i=i+t[n++]|0)|0}while(--o);i%=65521,a%=65521}return i|a<<16|0},G=new Uint32Array(function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}()),F=function(e,t,r,n){var i=G,a=n+r;e^=-1;for(var o=n;o>>8^i[255&(e^t[o])];return-1^e},z={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},j={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8},N=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},Z=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var n=t.shift();if(n){if("object"!==r(n))throw new TypeError(n+"must be non-object");for(var i in n)N(n,i)&&(e[i]=n[i])}}return e},K=function(e){for(var t=0,r=0,n=e.length;r=252?6:X>=248?5:X>=240?4:X>=224?3:X>=192?2:1;Y[254]=Y[254]=1;var W=function(e){if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);var t,r,n,i,a,o=e.length,s=0;for(i=0;i>>6,t[a++]=128|63&r):r<65536?(t[a++]=224|r>>>12,t[a++]=128|r>>>6&63,t[a++]=128|63&r):(t[a++]=240|r>>>18,t[a++]=128|r>>>12&63,t[a++]=128|r>>>6&63,t[a++]=128|63&r);return t},q=function(e,t){var r,n,i=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));var a=new Array(2*i);for(n=0,r=0;r4)a[n++]=65533,r+=s-1;else{for(o&=2===s?31:3===s?15:7;s>1&&r1?a[n++]=65533:o<65536?a[n++]=o:(o-=65536,a[n++]=55296|o>>10&1023,a[n++]=56320|1023&o)}}}return function(e,t){if(t<65534&&e.subarray&&H)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));for(var r="",n=0;ne.length&&(t=e.length);for(var r=t-1;r>=0&&128==(192&e[r]);)r--;return r<0||0===r?t:r+Y[e[r]]>t?r:t};var Q=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0},$=function(e,t){var r,n,i,a,o,s,f,l,u,c,h,d,p,m,v,y,w,g,b,k,x,_,A,P,I=e.state;r=e.next_in,A=e.input,n=r+(e.avail_in-5),i=e.next_out,P=e.output,a=i-(t-e.avail_out),o=i+(e.avail_out-257),s=I.dmax,f=I.wsize,l=I.whave,u=I.wnext,c=I.window,h=I.hold,d=I.bits,p=I.lencode,m=I.distcode,v=(1<>>=g=w>>>24,d-=g,0===(g=w>>>16&255))P[i++]=65535&w;else{if(!(16&g)){if(0==(64&g)){w=p[(65535&w)+(h&(1<>>=g,d-=g),d<15&&(h+=A[r++]<>>=g=w>>>24,d-=g,!(16&(g=w>>>16&255))){if(0==(64&g)){w=m[(65535&w)+(h&(1<s){e.msg="invalid distance too far back",I.mode=30;break e}if(h>>>=g,d-=g,k>(g=i-a)){if((g=k-g)>l&&I.sane){e.msg="invalid distance too far back",I.mode=30;break e}if(x=0,_=c,0===u){if(x+=f-g,g2;)P[i++]=_[x++],P[i++]=_[x++],P[i++]=_[x++],b-=3;b&&(P[i++]=_[x++],b>1&&(P[i++]=_[x++]))}else{x=i-k;do{P[i++]=P[x++],P[i++]=P[x++],P[i++]=P[x++],b-=3}while(b>2);b&&(P[i++]=P[x++],b>1&&(P[i++]=P[x++]))}break}}break}}while(r>3,h&=(1<<(d-=b<<3))-1,e.next_in=r,e.next_out=i,e.avail_in=r=1&&0===D[k];k--);if(x>k&&(x=k),0===k)return i[a++]=20971520,i[a++]=20971520,s.bits=1,0;for(b=1;b0&&(0===e||1!==k))return-1;for(E[1]=0,w=1;w<15;w++)E[w+1]=E[w]+D[w];for(g=0;g852||2===e&&I>592)return 1;for(;;){p=w-A,o[g]d?(m=B[O+o[g]],v=S[T+o[g]]):(m=96,v=0),f=1<>A)+(l-=f)]=p<<24|m<<16|v|0}while(0!==l);for(f=1<>=1;if(0!==f?(U&=f-1,U+=f):U=0,g++,0==--D[w]){if(w===k)break;w=t[r+o[g]]}if(w>x&&(U&c)!==u){for(0===A&&(A=x),h+=b,P=1<<(_=w-A);_+A852||2===e&&I>592)return 1;i[u=U&c]=x<<24|_<<16|h-a|0}}return 0!==U&&(i[h+U]=w-A<<24|64<<16|0),s.bits=x,0},ae=j.Z_FINISH,oe=j.Z_BLOCK,se=j.Z_TREES,fe=j.Z_OK,le=j.Z_STREAM_END,ue=j.Z_NEED_DICT,ce=j.Z_STREAM_ERROR,he=j.Z_DATA_ERROR,de=j.Z_MEM_ERROR,pe=j.Z_BUF_ERROR,me=j.Z_DEFLATED,ve=function(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)};function ye(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}var we,ge,be=function(e){if(!e||!e.state)return ce;var t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,fe},ke=function(e){if(!e||!e.state)return ce;var t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,be(e)},xe=function(e,t){var r;if(!e||!e.state)return ce;var n=e.state;return t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?ce:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,ke(e))},_e=function(e,t){if(!e)return ce;var r=new ye;e.state=r,r.window=null;var n=xe(e,t);return n!==fe&&(e.state=null),n},Ae=!0,Pe=function(e){if(Ae){we=new Int32Array(512),ge=new Int32Array(32);for(var t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(ie(1,e.lens,0,288,we,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;ie(2,e.lens,0,32,ge,0,e.work,{bits:5}),Ae=!1}e.lencode=we,e.lenbits=9,e.distcode=ge,e.distbits=5},Ie=function(e,t,r,n){var i,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(a.window.set(t.subarray(r-a.wsize,r),0),a.wnext=0,a.whave=a.wsize):((i=a.wsize-a.wnext)>n&&(i=n),a.window.set(t.subarray(r-n,r-n+i),a.wnext),(n-=i)?(a.window.set(t.subarray(r-n,r),0),a.wnext=n,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,r.check=F(r.check,U,2,0),l=0,u=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&l)<<8)+(l>>8))%31){e.msg="incorrect header check",r.mode=30;break}if((15&l)!==me){e.msg="unknown compression method",r.mode=30;break}if(u-=4,x=8+(15&(l>>>=4)),0===r.wbits)r.wbits=x;else if(x>r.wbits){e.msg="invalid window size",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(U[0]=255&l,U[1]=l>>>8&255,r.check=F(r.check,U,2,0)),l=0,u=0,r.mode=3;case 3:for(;u<32;){if(0===s)break e;s--,l+=n[a++]<>>8&255,U[2]=l>>>16&255,U[3]=l>>>24&255,r.check=F(r.check,U,4,0)),l=0,u=0,r.mode=4;case 4:for(;u<16;){if(0===s)break e;s--,l+=n[a++]<>8),512&r.flags&&(U[0]=255&l,U[1]=l>>>8&255,r.check=F(r.check,U,2,0)),l=0,u=0,r.mode=5;case 5:if(1024&r.flags){for(;u<16;){if(0===s)break e;s--,l+=n[a++]<>>8&255,r.check=F(r.check,U,2,0)),l=0,u=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((d=r.length)>s&&(d=s),d&&(r.head&&(x=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Uint8Array(r.head.extra_len)),r.head.extra.set(n.subarray(a,a+d),x)),512&r.flags&&(r.check=F(r.check,n,d,a)),s-=d,a+=d,r.length-=d),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===s)break e;d=0;do{x=n[a+d++],r.head&&x&&r.length<65536&&(r.head.name+=String.fromCharCode(x))}while(x&&d>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;u<32;){if(0===s)break e;s--,l+=n[a++]<>>=7&u,u-=7&u,r.mode=27;break}for(;u<3;){if(0===s)break e;s--,l+=n[a++]<>>=1)){case 0:r.mode=14;break;case 1:if(Pe(r),r.mode=20,t===se){l>>>=2,u-=2;break e}break;case 2:r.mode=17;break;case 3:e.msg="invalid block type",r.mode=30}l>>>=2,u-=2;break;case 14:for(l>>>=7&u,u-=7&u;u<32;){if(0===s)break e;s--,l+=n[a++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=30;break}if(r.length=65535&l,l=0,u=0,r.mode=15,t===se)break e;case 15:r.mode=16;case 16:if(d=r.length){if(d>s&&(d=s),d>f&&(d=f),0===d)break e;i.set(n.subarray(a,a+d),o),s-=d,a+=d,f-=d,o+=d,r.length-=d;break}r.mode=12;break;case 17:for(;u<14;){if(0===s)break e;s--,l+=n[a++]<>>=5,u-=5,r.ndist=1+(31&l),l>>>=5,u-=5,r.ncode=4+(15&l),l>>>=4,u-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,u-=3}for(;r.have<19;)r.lens[S[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,A={bits:r.lenbits},_=ie(0,r.lens,0,19,r.lencode,0,r.work,A),r.lenbits=A.bits,_){e.msg="invalid code lengths set",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,w=65535&I,!((v=I>>>24)<=u);){if(0===s)break e;s--,l+=n[a++]<>>=v,u-=v,r.lens[r.have++]=w;else{if(16===w){for(P=v+2;u>>=v,u-=v,0===r.have){e.msg="invalid bit length repeat",r.mode=30;break}x=r.lens[r.have-1],d=3+(3&l),l>>>=2,u-=2}else if(17===w){for(P=v+3;u>>=v)),l>>>=3,u-=3}else{for(P=v+7;u>>=v)),l>>>=7,u-=7}if(r.have+d>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=30;break}for(;d--;)r.lens[r.have++]=x}}if(30===r.mode)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=30;break}if(r.lenbits=9,A={bits:r.lenbits},_=ie(1,r.lens,0,r.nlen,r.lencode,0,r.work,A),r.lenbits=A.bits,_){e.msg="invalid literal/lengths set",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,A={bits:r.distbits},_=ie(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,A),r.distbits=A.bits,_){e.msg="invalid distances set",r.mode=30;break}if(r.mode=20,t===se)break e;case 20:r.mode=21;case 21:if(s>=6&&f>=258){e.next_out=o,e.avail_out=f,e.next_in=a,e.avail_in=s,r.hold=l,r.bits=u,$(e,h),o=e.next_out,i=e.output,f=e.avail_out,a=e.next_in,n=e.input,s=e.avail_in,l=r.hold,u=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;y=(I=r.lencode[l&(1<>>16&255,w=65535&I,!((v=I>>>24)<=u);){if(0===s)break e;s--,l+=n[a++]<>g)])>>>16&255,w=65535&I,!(g+(v=I>>>24)<=u);){if(0===s)break e;s--,l+=n[a++]<>>=g,u-=g,r.back+=g}if(l>>>=v,u-=v,r.back+=v,r.length=w,0===y){r.mode=26;break}if(32&y){r.back=-1,r.mode=12;break}if(64&y){e.msg="invalid literal/length code",r.mode=30;break}r.extra=15&y,r.mode=22;case 22:if(r.extra){for(P=r.extra;u>>=r.extra,u-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;y=(I=r.distcode[l&(1<>>16&255,w=65535&I,!((v=I>>>24)<=u);){if(0===s)break e;s--,l+=n[a++]<>g)])>>>16&255,w=65535&I,!(g+(v=I>>>24)<=u);){if(0===s)break e;s--,l+=n[a++]<>>=g,u-=g,r.back+=g}if(l>>>=v,u-=v,r.back+=v,64&y){e.msg="invalid distance code",r.mode=30;break}r.offset=w,r.extra=15&y,r.mode=24;case 24:if(r.extra){for(P=r.extra;u>>=r.extra,u-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=30;break}r.mode=25;case 25:if(0===f)break e;if(d=h-f,r.offset>d){if((d=r.offset-d)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=30;break}d>r.wnext?(d-=r.wnext,p=r.wsize-d):p=r.wnext-d,d>r.length&&(d=r.length),m=r.window}else m=i,p=o-r.offset,d=r.length;d>f&&(d=f),f-=d,r.length-=d;do{i[o++]=m[p++]}while(--d);0===r.length&&(r.mode=21);break;case 26:if(0===f)break e;i[o++]=r.length,f--,r.mode=21;break;case 27:if(r.wrap){for(;u<32;){if(0===s)break e;s--,l|=n[a++]<=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Q,this.strm.avail_out=0;var r=Ue.inflateInit2(this.strm,t.windowBits);if(r!==Be)throw new Error(z[r]);if(this.header=new Se,Ue.inflateGetHeader(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=W(t.dictionary):"[object ArrayBuffer]"===Te.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=Ue.inflateSetDictionary(this.strm,t.dictionary))!==Be))throw new Error(z[r])}function Ge(e,t){var r=new Ve(t);if(r.push(e),r.err)throw r.msg||z[r.err];return r.result}Ve.prototype.push=function(e,t){var r,n,i,a=this.strm,o=this.options.chunkSize,s=this.options.dictionary;if(this.ended)return!1;for(n=t===~~t?t:!0===t?Ee:De,"[object ArrayBuffer]"===Te.call(e)?a.input=new Uint8Array(e):a.input=e,a.next_in=0,a.avail_in=a.input.length;;){for(0===a.avail_out&&(a.output=new Uint8Array(o),a.next_out=0,a.avail_out=o),(r=Ue.inflate(a,n))===Me&&s&&((r=Ue.inflateSetDictionary(a,s))===Be?r=Ue.inflate(a,n):r===Le&&(r=Me));a.avail_in>0&&r===Oe&&a.state.wrap>0&&0!==e[a.next_in];)Ue.inflateReset(a),r=Ue.inflate(a,n);switch(r){case Ce:case Le:case Me:case Re:return this.onEnd(r),this.ended=!0,!1}if(i=a.avail_out,a.next_out&&(0===a.avail_out||r===Oe))if("string"===this.options.to){var f=J(a.output,a.next_out),l=a.next_out-f,u=q(a.output,f);a.next_out=l,a.avail_out=o-l,l&&a.output.set(a.output.subarray(f,f+l),0),this.onData(u)}else this.onData(a.output.length===a.next_out?a.output:a.output.subarray(0,a.next_out));if(r!==Be||0!==i){if(r===Oe)return r=Ue.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,!0;if(0===a.avail_in)break}}return!0},Ve.prototype.onData=function(e){this.chunks.push(e)},Ve.prototype.onEnd=function(e){e===Be&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=K(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var Fe={Inflate:Ve,inflate:Ge,inflateRaw:function(e,t){return(t=t||{}).raw=!0,Ge(e,t)},ungzip:Ge,constants:j}.inflate;function ze(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=v(e);if(t){var i=v(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return m(this,r)}}var je=function(e){p(r,b);var t=ze(r);function r(){return u(this,r),t.apply(this,arguments)}return h(r,[{key:"decodeBlock",value:function(e){return Fe(new Uint8Array(e)).buffer}}]),r}(),Ne=Object.freeze({__proto__:null,default:je});function Ze(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,n=v(e);if(t){var i=v(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return m(this,r)}}var Ke,He=function(e){p(r,b);var t=Ze(r);function r(){return u(this,r),t.apply(this,arguments)}return h(r,[{key:"decodeBlock",value:function(e){for(var t=new DataView(e),r=[],n=0;n>3],I<<=7&U),v=0;v>3]),128&I?(f&&(f[U]=1),m=m>(o=T.encoding<2?_[A++]:P)?o:m,s[U++]=o):(f&&(f[U]=0),s[U++]=n),I<<=1;U+=S}else if(T.encoding<2)for(y=0;y(o=_[A++])?o:m,s[U++]=o;U+=S}else for(m=m>P?P:m,y=0;y0){var o=new Uint8Array(Math.ceil(n.width*n.height/8)),s=(a=new DataView(e,t,n.mask.numBytes)).getInt16(0,!0),f=2,l=0;do{if(s>0)for(;s--;)o[l++]=a.getUint8(f++);else{var u=a.getUint8(f++);for(s=-s;s--;)o[l++]=u}s=a.getInt16(f,!0),f+=2}while(f0?1:0),p=h+(n.height%h>0?1:0);n.pixels.blocks=new Array(d*p);for(var m=0,v=0;v3)throw"Invalid block encoding ("+b.encoding+")";if(2!==b.encoding){if(0!==k&&2!==k){if(k>>=6,b.offsetType=k,2===k)b.offset=a.getInt8(1),w++;else if(1===k)b.offset=a.getInt16(1,!0),w+=2;else{if(0!==k)throw"Invalid block offset type";b.offset=a.getFloat32(1,!0),w+=4}if(1===b.encoding)if(k=a.getUint8(w),w++,b.bitsPerPixel=63&k,k>>=6,b.numValidPixelsType=k,2===k)b.numValidPixels=a.getUint8(w),w++;else if(1===k)b.numValidPixels=a.getUint16(w,!0),w+=2;else{if(0!==k)throw"Invalid valid pixel count type";b.numValidPixels=a.getUint32(w,!0),w+=4}}var x;if(t+=w,3!==b.encoding)if(0===b.encoding){var _=(n.pixels.numBytes-1)/4;if(_!==Math.floor(_))throw"uncompressed block has invalid length";x=new ArrayBuffer(4*_),new Uint8Array(x).set(new Uint8Array(e,t,4*_));var A=new Float32Array(x);b.rawData=A,t+=4*_}else if(1===b.encoding){var P=Math.ceil(b.numValidPixels*b.bitsPerPixel/8),I=Math.ceil(P/4);x=new ArrayBuffer(4*I),new Uint8Array(x).set(new Uint8Array(e,t,P)),b.stuffedData=new Uint32Array(x),t+=P}}else t++}return n.eofOffset=t,n},a=function(e,t,r,n,i,a,o){var s,f,l,u=(1<=t)f=l>>>h-t&u,h-=t;else{var m=t-h;f=(l&u)<>>(h=32-m)}a[s]=f=r?(l=u>>>m-r&d,m-=r):(l=(u&d)<<(c=r-m)&d,l+=(u=e[p++])>>>(m=32-c)),t[f]=i[l];else for(h=Math.ceil((s-a)/o),f=0;f=r?(l=u>>>m-r&d,m-=r):(l=(u&d)<<(c=r-m)&d,l+=(u=e[p++])>>>(m=32-c)),t[f]=l=t?(h=o>>>c-t&s,c-=t):(h=(o&s)<<(u=t-c)&s,h+=(o=e[f++])>>>(c=32-u)),d[l]=h=r?(l=u>>>m&h,p-=r,m+=r):(l=u>>>m&h,p=32-(c=r-p),l|=((u=e[d++])&(1<=r?(l=u>>>m&h,p-=r,m+=r):(l=u>>>m&h,p=32-(c=r-p),l|=((u=e[d++])&(1<=t?(h=o>>>d&s,c-=t,d+=t):(h=o>>>d&s,c=32-(u=t-c),h|=((o=e[f++])&(1<=r?(a=o>>>u-r&f,u-=r):(a=(o&f)<<(s=r-u)&f,a+=(o=e[l++])>>>(u=32-s)),t[i]=a;return t},c=function(e,t,r,n){var i,a,o,s,f=(1<=r?(a=o>>>c&f,u-=r,c+=r):(a=o>>>c&f,u=32-(s=r-u),a|=((o=e[l++])&(1<=359?359:i;i-=o;do{t+=e[a++]<<8,r+=t+=e[a++]}while(--o);t=(65535&t)+(t>>>16),r=(65535&r)+(r>>>16)}return 1&n&&(r+=t+=e[a]<<8),((r=(65535&r)+(r>>>16))<<16|(t=(65535&t)+(t>>>16)))>>>0},readHeaderInfo:function(e,t){var r=t.ptr,n=new Uint8Array(e,r,6),i={};if(i.fileIdentifierString=String.fromCharCode.apply(null,n),0!==i.fileIdentifierString.lastIndexOf("Lerc2",0))throw"Unexpected file identifier string (expect Lerc2 ): "+i.fileIdentifierString;r+=6;var a,o=new DataView(e,r,8),s=o.getInt32(0,!0);if(i.fileVersion=s,r+=4,s>=3&&(i.checksum=o.getUint32(4,!0),r+=4),o=new DataView(e,r,12),i.height=o.getUint32(0,!0),i.width=o.getUint32(4,!0),r+=8,s>=4?(i.numDims=o.getUint32(8,!0),r+=4):i.numDims=1,o=new DataView(e,r,40),i.numValidPixel=o.getUint32(0,!0),i.microBlockSize=o.getInt32(4,!0),i.blobSize=o.getInt32(8,!0),i.imageType=o.getInt32(12,!0),i.maxZError=o.getFloat64(16,!0),i.zMin=o.getFloat64(24,!0),i.zMax=o.getFloat64(32,!0),r+=40,t.headerInfo=i,t.ptr=r,s>=3&&(a=s>=4?52:48,this.computeChecksumFletcher32(new Uint8Array(e,r-a,i.blobSize-14))!==i.checksum))throw"Checksum failed.";return!0},checkMinMaxRanges:function(e,t){var r=t.headerInfo,n=this.getDataTypeArray(r.imageType),i=r.numDims*this.getDataTypeSize(r.imageType),a=this.readSubArray(e,t.ptr,n,i),o=this.readSubArray(e,t.ptr+i,n,i);t.ptr+=2*i;var s,f=!0;for(s=0;s0){r=new Uint8Array(Math.ceil(o/8));var u=(f=new DataView(e,i,l.numBytes)).getInt16(0,!0),c=2,h=0,d=0;do{if(u>0)for(;u--;)r[h++]=f.getUint8(c++);else for(d=f.getUint8(c++),u=-u;u--;)r[h++]=d;u=f.getInt16(c,!0),c+=2}while(c>3],p<<=7&m):p=r[m>>3],128&p&&(n[m]=1);t.pixels.resultMask=n,l.bitset=r,i+=l.numBytes}return t.ptr=i,t.mask=l,!0},readDataOneSweep:function(e,t,r,n){var i,a=t.ptr,o=t.headerInfo,s=o.numDims,f=o.width*o.height,l=o.imageType,u=o.numValidPixel*h.getDataTypeSize(l)*s,c=t.pixels.resultMask;if(r===Uint8Array)i=new Uint8Array(e,a,u);else{var d=new ArrayBuffer(u);new Uint8Array(d).set(new Uint8Array(e,a,u)),i=new r(d)}if(i.length===f*s)t.pixels.resultPixels=n?h.swapDimensionOrder(i,f,s,r,!0):i;else{t.pixels.resultPixels=new r(f*s);var p=0,m=0,v=0,y=0;if(s>1){if(n){for(m=0;m=o)return!1;var s=new Uint32Array(o-a);h.decodeBits(e,t,s);var f,l,u,c,p=[];for(f=a;f0&&(p[l].second=w<>>32-c,32-b>=c?32===(b+=c)&&(b=0,w=g[++k]):(b+=c-32,w=g[++k],p[l].second|=w>>>32-b));var x=0,_=0,A=new d;for(f=0;f=r?r:x;var P,I,U,S,T,D=[];for(f=a;f0)if(P=[c,l],c<=_)for(I=p[l].second<<_-c,U=1<<_-c,u=0;u=0;S--)I>>>S&1?(T.right||(T.right=new d),T=T.right):(T.left||(T.left=new d),T=T.left),0!==S||T.val||(T.val=P[1]);return{decodeLut:D,numBitsLUTQick:_,numBitsLUT:x,tree:A,stuffedData:g,srcPtr:k,bitPos:b}},readHuffman:function(e,t,r,n){var i,a,o,s,f,l,u,c,d,p=t.headerInfo.numDims,m=t.headerInfo.height,v=t.headerInfo.width,y=v*m,w=this.readHuffmanTree(e,t),g=w.decodeLut,b=w.tree,k=w.stuffedData,x=w.srcPtr,_=w.bitPos,A=w.numBitsLUTQick,P=w.numBitsLUT,I=0===t.headerInfo.imageType?128:0,U=t.pixels.resultMask,S=0;_>0&&(x++,_=0);var T,D=k[x],E=1===t.encodeMode,B=new r(y*p),O=B;if(p<2||E){for(T=0;T1&&(O=new r(B.buffer,y*T,y),S=0),t.headerInfo.numValidPixel===v*m)for(c=0,l=0;l>>32-A,32-_>>64-_-A),g[f])a=g[f][1],_+=g[f][0];else for(f=s=D<<_>>>32-P,32-_>>64-_-P),i=b,d=0;d>>P-d-1&1?i.right:i.left).left&&!i.right){a=i.val,_=_+d+1;break}_>=32&&(_-=32,D=k[++x]),o=a-I,E?(o+=u>0?S:l>0?O[c-v]:S,o&=255,O[c]=o,S=o):O[c]=o}else for(c=0,l=0;l>>32-A,32-_>>64-_-A),g[f])a=g[f][1],_+=g[f][0];else for(f=s=D<<_>>>32-P,32-_>>64-_-P),i=b,d=0;d>>P-d-1&1?i.right:i.left).left&&!i.right){a=i.val,_=_+d+1;break}_>=32&&(_-=32,D=k[++x]),o=a-I,E?(u>0&&U[c-1]?o+=S:l>0&&U[c-v]?o+=O[c-v]:o+=S,o&=255,O[c]=o,S=o):O[c]=o}}else for(c=0,l=0;l>>32-A,32-_>>64-_-A),g[f])a=g[f][1],_+=g[f][0];else for(f=s=D<<_>>>32-P,32-_>>64-_-P),i=b,d=0;d>>P-d-1&1?i.right:i.left).left&&!i.right){a=i.val,_=_+d+1;break}_>=32&&(_-=32,D=k[++x]),o=a-I,O[c]=o}t.ptr=t.ptr+4*(x+1)+(_>0?4:0),t.pixels.resultPixels=B,p>1&&!n&&(t.pixels.resultPixels=h.swapDimensionOrder(B,y,p,r))},decodeBits:function(e,t,r,n,i){var a=t.headerInfo,h=a.fileVersion,d=0,p=e.byteLength-t.ptr>=5?5:e.byteLength-t.ptr,m=new DataView(e,t.ptr,p),v=m.getUint8(0);d++;var y=v>>6,w=0===y?4:3-y,g=(32&v)>0,b=31&v,k=0;if(1===w)k=m.getUint8(d),d++;else if(2===w)k=m.getUint16(d,!0),d+=2;else{if(4!==w)throw"Invalid valid pixel count type";k=m.getUint32(d,!0),d+=4}var x,_,A,P,I,U,S,T,D,E=2*a.maxZError,B=a.numDims>1?a.maxValues[i]:a.zMax;if(g){for(t.counter.lut++,T=m.getUint8(d),d++,P=Math.ceil((T-1)*b/8),I=Math.ceil(P/4),_=new ArrayBuffer(4*I),A=new Uint8Array(_),t.ptr+=d,A.set(new Uint8Array(e,t.ptr,P)),S=new Uint32Array(_),t.ptr+=P,D=0;T-1>>>D;)D++;P=Math.ceil(k*D/8),I=Math.ceil(P/4),_=new ArrayBuffer(4*I),(A=new Uint8Array(_)).set(new Uint8Array(e,t.ptr,P)),x=new Uint32Array(_),t.ptr+=P,U=h>=3?l(S,b,T-1,n,E,B):s(S,b,T-1,n,E,B),h>=3?f(x,r,D,k,U):o(x,r,D,k,U)}else t.counter.bitstuffer++,D=b,t.ptr+=d,D>0&&(P=Math.ceil(k*D/8),I=Math.ceil(P/4),_=new ArrayBuffer(4*I),(A=new Uint8Array(_)).set(new Uint8Array(e,t.ptr,P)),x=new Uint32Array(_),t.ptr+=P,h>=3?null==n?c(x,r,D,k):f(x,r,D,k,!1,n,E,B):null==n?u(x,r,D,k):o(x,r,D,k,!1,n,E,B))},readTiles:function(e,t,r,n){var i=t.headerInfo,a=i.width,o=i.height,s=a*o,f=i.microBlockSize,l=i.imageType,u=h.getDataTypeSize(l),c=Math.ceil(a/f),d=Math.ceil(o/f);t.pixels.numBlocksY=d,t.pixels.numBlocksX=c,t.pixels.ptr=0;var p,m,v,y,w,g,b,k,x,_,A=0,P=0,I=0,U=0,S=0,T=0,D=0,E=0,B=0,O=0,M=0,C=0,L=0,R=0,V=0,G=new r(f*f),F=o%f||f,z=a%f||f,j=i.numDims,N=t.pixels.resultMask,Z=t.pixels.resultPixels,K=i.fileVersion>=5?14:15,H=i.zMax;for(I=0;I1?(_=Z,O=I*a*f+U*f,Z=new r(t.pixels.resultPixels.buffer,s*k*u,s),H=i.maxValues[k]):_=null,D=e.byteLength-t.ptr,m={},V=0,E=(p=new DataView(e,t.ptr,Math.min(10,D))).getUint8(0),V++,x=i.fileVersion>=5?4&E:0,B=E>>6&255,(E>>2&K)!=(U*f>>3&K))throw"integrity issue";if(x&&0===k)throw"integrity issue";if((w=3&E)>3)throw t.ptr+=V,"Invalid block encoding ("+w+")";if(2!==w)if(0===w){if(x)throw"integrity issue";if(t.counter.uncompressed++,t.ptr+=V,C=(C=S*T*u)<(L=e.byteLength-t.ptr)?C:L,v=new ArrayBuffer(C%u==0?C:C+u-C%u),new Uint8Array(v).set(new Uint8Array(e,t.ptr,C)),y=new r(v),R=0,N)for(A=0;A1&&!n&&(t.pixels.resultPixels=h.swapDimensionOrder(t.pixels.resultPixels,s,j,r))},formatFileInfo:function(e){return{fileIdentifierString:e.headerInfo.fileIdentifierString,fileVersion:e.headerInfo.fileVersion,imageType:e.headerInfo.imageType,height:e.headerInfo.height,width:e.headerInfo.width,numValidPixel:e.headerInfo.numValidPixel,microBlockSize:e.headerInfo.microBlockSize,blobSize:e.headerInfo.blobSize,maxZError:e.headerInfo.maxZError,pixelType:h.getPixelType(e.headerInfo.imageType),eofOffset:e.eofOffset,mask:e.mask?{numBytes:e.mask.numBytes}:null,pixels:{numBlocksX:e.pixels.numBlocksX,numBlocksY:e.pixels.numBlocksY,maxValue:e.headerInfo.zMax,minValue:e.headerInfo.zMin,noDataValue:e.noDataValue}}},constructConstantSurface:function(e,t){var r=e.headerInfo.zMax,n=e.headerInfo.zMin,i=e.headerInfo.maxValues,a=e.headerInfo.numDims,o=e.headerInfo.height*e.headerInfo.width,s=0,f=0,l=0,u=e.pixels.resultMask,c=e.pixels.resultPixels;if(u)if(a>1){if(t)for(s=0;s1&&n!==r)if(t)for(s=0;s=-128&&t<=127;break;case 1:r=t>=0&&t<=255;break;case 2:r=t>=-32768&&t<=32767;break;case 3:r=t>=0&&t<=65536;break;case 4:r=t>=-2147483648&&t<=2147483647;break;case 5:r=t>=0&&t<=4294967296;break;case 6:r=t>=-34027999387901484e22&&t<=34027999387901484e22;break;case 7:r=t>=-17976931348623157e292&&t<=17976931348623157e292;break;default:r=!1}return r},getDataTypeSize:function(e){var t=0;switch(e){case 0:case 1:t=1;break;case 2:case 3:t=2;break;case 4:case 5:case 6:t=4;break;case 7:t=8;break;default:t=e}return t},getDataTypeUsed:function(e,t){var r=e;switch(e){case 2:case 4:r=e-t;break;case 3:case 5:r=e-2*t;break;case 6:r=0===t?e:1===t?2:1;break;case 7:r=0===t?e:e-2*t+1;break;default:r=e}return r},getOnePixel:function(e,t,r,n){var i=0;switch(r){case 0:i=n.getInt8(t);break;case 1:i=n.getUint8(t);break;case 2:i=n.getInt16(t,!0);break;case 3:i=n.getUint16(t,!0);break;case 4:i=n.getInt32(t,!0);break;case 5:i=n.getUInt32(t,!0);break;case 6:i=n.getFloat32(t,!0);break;case 7:i=n.getFloat64(t,!0);break;default:throw"the decoder does not understand this pixel type"}return i},swapDimensionOrder:function(e,t,r,n,i){var a=0,o=0,s=0,f=0,l=e;if(r>1)if(l=new n(t*r),i)for(a=0;a5)throw"unsupported lerc version 2."+o;h.readMask(e,i),a.numValidPixel===a.width*a.height||i.pixels.resultMask||(i.pixels.resultMask=t.maskData);var f=a.width*a.height;i.pixels.resultPixels=new s(f*a.numDims),i.counter={onesweep:0,uncompressed:0,lut:0,bitstuffer:0,constant:0,constantoffset:0};var l,u=!t.returnPixelInterleavedDims;if(0!==a.numValidPixel)if(a.zMax===a.zMin)h.constructConstantSurface(i,u);else if(o>=4&&h.checkMinMaxRanges(e,i))h.constructConstantSurface(i,u);else{var c=new DataView(e,i.ptr,2),d=c.getUint8(0);if(i.ptr++,d)h.readDataOneSweep(e,i,s,u);else if(o>1&&a.imageType<=1&&Math.abs(a.maxZError-.5)<1e-5){var p=c.getUint8(1);if(i.ptr++,i.encodeMode=p,p>2||o<4&&p>1)throw"Invalid Huffman flag "+p;p?h.readHuffman(e,i,s,u):h.readTiles(e,i,s,u)}else h.readTiles(e,i,s,u)}i.eofOffset=i.ptr,t.inputOffset?(l=i.headerInfo.blobSize+t.inputOffset-i.ptr,Math.abs(l)>=1&&(i.eofOffset=t.inputOffset+i.headerInfo.blobSize)):(l=i.headerInfo.blobSize-i.ptr,Math.abs(l)>=1&&(i.eofOffset=i.headerInfo.blobSize));var m={width:a.width,height:a.height,pixelData:i.pixels.resultPixels,minValue:a.zMin,maxValue:a.zMax,validPixelCount:a.numValidPixel,dimCount:a.numDims,dimStats:{minValues:a.minValues,maxValues:a.maxValues},maskData:i.pixels.resultMask};if(i.pixels.resultMask&&h.isValidPixelValue(a.imageType,r)){var v=i.pixels.resultMask;for(n=0;n1&&(l&&m.push(l),k.fileInfo.mask&&k.fileInfo.mask.numBytes>0&&b++),d++,g.pixels.push(k.pixelData),g.statistics.push({minValue:k.minValue,maxValue:k.maxValue,noDataValue:k.noDataValue,dimStats:k.dimStats})}if(n>1&&b>1){for(h=g.width*g.height,g.bandMasks=m,(l=new Uint8Array(h)).set(m[0]),u=1;u=0;r--)t.push(e[r]);return t}function o(t){const e=new Uint16Array(4093),r=new Uint8Array(4093);for(let t=0;t<=257;t++)e[t]=4096,r[t]=t;let n=258,o=9,a=0;function s(){n=258,o=9}function l(t){const e=function(t,e,r){const n=e%8,i=Math.floor(e/8),o=8-n,a=e+r-8*(i+1);let s=8*(i+2)-(e+r);const l=8*(i+2)-e;if(s=Math.max(0,s),i>=t.length)return console.warn("ran off the end of the buffer before finding EOI_CODE (end on input code)"),257;let u=t[i]&2**(8-n)-1;u<<=r-o;let c=u;if(i+1>>s;e<<=Math.max(0,r-l),c+=e}if(a>8&&i+2>>n}return c}(t,a,o);return a+=o,e}function u(t,i){return r[n]=i,e[n]=t,n++,n-1}function c(t){const n=[];for(let i=t;4096!==i;i=e[i])n.push(r[i]);return n}const h=[];s();const f=new Uint8Array(t);let p,d=l(f);for(;257!==d;){if(256===d){for(s(),d=l(f);256===d;)d=l(f);if(257===d)break;if(d>256)throw new Error("corrupted code at scanline "+d);i(h,c(d)),p=d}else if(d=2**o&&(12===o?p=void 0:o++),d=l(f)}return new Uint8Array(h)}class a extends n.a{decodeBlock(t){return o(t).buffer}}},function(t,e,r){"use strict";r.r(e),r.d(e,"default",(function(){return m}));var n=r(41);const i=new Int32Array([0,1,8,16,9,2,3,10,17,24,32,25,18,11,4,5,12,19,26,33,40,48,41,34,27,20,13,6,7,14,21,28,35,42,49,56,57,50,43,36,29,22,15,23,30,37,44,51,58,59,52,45,38,31,39,46,53,60,61,54,47,55,62,63]),o=4017,a=799,s=3406,l=2276,u=1567,c=3784,h=5793,f=2896;function p(t,e){let r=0;const n=[];let i=16;for(;i>0&&!t[i-1];)--i;n.push({children:[],index:0});let o,a=n[0];for(let s=0;s0;)a=n.pop();for(a.index++,n.push(a);n.length<=s;)n.push(o={children:[],index:0}),a.children[a.index]=o.children,a=o;r++}s+10)return g--,d>>g&1;if(d=t[p++],255===d){const e=t[p++];if(e)throw new Error("unexpected marker: "+(d<<8|e).toString(16))}return g=7,d>>>7}function m(t){let e,r=t;for(;null!==(e=y());){if(r=r[e],"number"==typeof r)return r;if("object"!=typeof r)throw new Error("invalid huffman sequence")}return null}function _(t){let e=t,r=0;for(;e>0;){const t=y();if(null===t)return;r=r<<1|t,--e}return r}function v(t){const e=_(t);return e>=1<0)return void b--;let r=a;const n=s;for(;r<=n;){const n=m(t.huffmanTableAC),o=15&n,a=n>>4;if(0===o){if(a<15){b=_(a)+(1<>4,0===r)o<15?(b=_(o)+(1<>4;if(0===n){if(a<15)break;o+=16}else o+=a,e[i[o]]=v(n),o++}};let M,N,A=0;N=1===S?n[0].blocksPerLine*n[0].blocksPerColumn:c*r.mcusPerColumn;const k=o||N;for(;A=65488&&M<=65495))break;p+=2}return p-f}function g(t,e){const r=[],{blocksPerLine:n,blocksPerColumn:i}=e,p=n<<3,d=new Int32Array(64),g=new Uint8Array(64);function y(t,r,n){const i=e.quantizationTable;let p,d,g,y,m,_,v,b,x;const w=n;let E;for(E=0;E<64;E++)w[E]=t[E]*i[E];for(E=0;E<8;++E){const t=8*E;0!==w[1+t]||0!==w[2+t]||0!==w[3+t]||0!==w[4+t]||0!==w[5+t]||0!==w[6+t]||0!==w[7+t]?(p=h*w[0+t]+128>>8,d=h*w[4+t]+128>>8,g=w[2+t],y=w[6+t],m=f*(w[1+t]-w[7+t])+128>>8,b=f*(w[1+t]+w[7+t])+128>>8,_=w[3+t]<<4,v=w[5+t]<<4,x=p-d+1>>1,p=p+d+1>>1,d=x,x=g*c+y*u+128>>8,g=g*u-y*c+128>>8,y=x,x=m-v+1>>1,m=m+v+1>>1,v=x,x=b+_+1>>1,_=b-_+1>>1,b=x,x=p-y+1>>1,p=p+y+1>>1,y=x,x=d-g+1>>1,d=d+g+1>>1,g=x,x=m*l+b*s+2048>>12,m=m*s-b*l+2048>>12,b=x,x=_*a+v*o+2048>>12,_=_*o-v*a+2048>>12,v=x,w[0+t]=p+b,w[7+t]=p-b,w[1+t]=d+v,w[6+t]=d-v,w[2+t]=g+_,w[5+t]=g-_,w[3+t]=y+m,w[4+t]=y-m):(x=h*w[0+t]+512>>10,w[0+t]=x,w[1+t]=x,w[2+t]=x,w[3+t]=x,w[4+t]=x,w[5+t]=x,w[6+t]=x,w[7+t]=x)}for(E=0;E<8;++E){const t=E;0!==w[8+t]||0!==w[16+t]||0!==w[24+t]||0!==w[32+t]||0!==w[40+t]||0!==w[48+t]||0!==w[56+t]?(p=h*w[0+t]+2048>>12,d=h*w[32+t]+2048>>12,g=w[16+t],y=w[48+t],m=f*(w[8+t]-w[56+t])+2048>>12,b=f*(w[8+t]+w[56+t])+2048>>12,_=w[24+t],v=w[40+t],x=p-d+1>>1,p=p+d+1>>1,d=x,x=g*c+y*u+2048>>12,g=g*u-y*c+2048>>12,y=x,x=m-v+1>>1,m=m+v+1>>1,v=x,x=b+_+1>>1,_=b-_+1>>1,b=x,x=p-y+1>>1,p=p+y+1>>1,y=x,x=d-g+1>>1,d=d+g+1>>1,g=x,x=m*l+b*s+2048>>12,m=m*s-b*l+2048>>12,b=x,x=_*a+v*o+2048>>12,_=_*o-v*a+2048>>12,v=x,w[0+t]=p+b,w[56+t]=p-b,w[8+t]=d+v,w[48+t]=d-v,w[16+t]=g+_,w[40+t]=g-_,w[24+t]=y+m,w[32+t]=y-m):(x=h*n[E+0]+8192>>14,w[0+t]=x,w[8+t]=x,w[16+t]=x,w[24+t]=x,w[32+t]=x,w[40+t]=x,w[48+t]=x,w[56+t]=x)}for(E=0;E<64;++E){const t=128+(w[E]+8>>4);r[E]=t<0?0:t>255?255:t}}for(let t=0;t>4==0)for(let r=0;r<64;r++){o[i[r]]=t[e++]}else{if(n>>4!=1)throw new Error("DQT: invalid table spec");for(let t=0;t<64;t++){o[i[t]]=r()}}this.quantizationTables[15&n]=o}break}case 65472:case 65473:case 65474:{r();const n={extended:65473===a,progressive:65474===a,precision:t[e++],scanLines:r(),samplesPerLine:r(),components:{},componentsOrder:[]},i=t[e++];let s;for(let r=0;r>4,i=15&t[e+1],o=t[e+2];n.componentsOrder.push(s),n.components[s]={h:r,v:i,quantizationIdx:o},e+=3}o(n),this.frames.push(n);break}case 65476:{const n=r();for(let r=2;r>4==0?this.huffmanTablesDC[15&n]=p(i,a):this.huffmanTablesAC[15&n]=p(i,a)}break}case 65501:r(),this.resetInterval=r();break;case 65498:{r();const n=t[e++],i=[],o=this.frames[0];for(let r=0;r>4],r.huffmanTableAC=this.huffmanTablesAC[15&n],i.push(r)}const a=t[e++],s=t[e++],l=t[e++],u=d(t,e,o,i,this.resetInterval,a,s,l>>4,15&l);e+=u;break}case 65535:255!==t[e]&&e--;break;default:if(255===t[e-3]&&t[e-2]>=192&&t[e-2]<=254){e-=3;break}throw new Error("unknown JPEG marker "+a.toString(16))}a=r()}}getResult(){const{frames:t}=this;if(0===this.frames.length)throw new Error("no frames were decoded");this.frames.length>1&&console.warn("more than one frame is not supported");for(let t=0;t4.0.0 es.juntadeandalucia.mapea mapea-parent - 6.2.0 + 6.3.0 pom Mapea PARENT Herramienta para desarrollo de mapas interactivos de forma sencilla @@ -117,10 +117,10 @@ commons-io 1.4 - - commons-httpclient - commons-httpclient - 3.1 - + + org.apache.httpcomponents + httpclient + 4.5.2 + diff --git a/mapea-parent/src/main/filters/mapea-desarrollo.properties b/mapea-parent/src/main/filters/mapea-desarrollo.properties index 6f7888fd4..c3e32e4b3 100644 --- a/mapea-parent/src/main/filters/mapea-desarrollo.properties +++ b/mapea-parent/src/main/filters/mapea-desarrollo.properties @@ -1,41 +1,41 @@ mobile.width=768 -mapea.url=//sigc-dev.desarrollo.guadaltel.es/mapea6 -mapea.proxy.url=//sigc-dev.desarrollo.guadaltel.es/mapea6/api/proxy -mapea.proxy_post.url=//sigc-dev.desarrollo.guadaltel.es/mapea6/proxyPost +mapea.url=https://sigc-dev.desarrollo.guadaltel.es/mapea6 +mapea.proxy.url=https://sigc-dev.desarrollo.guadaltel.es/mapea6/api/proxy +mapea.proxy_post.url=https://sigc-dev.desarrollo.guadaltel.es/mapea6/proxyPost mapea.templates.path=/files/templates/ -mapea.theme.url=//sigc-dev.desarrollo.guadaltel.es/mapea6/assets/ -geosearch.url=//geobusquedas-sigc.juntadeandalucia.es +mapea.theme.url=https://sigc-dev.desarrollo.guadaltel.es/mapea6/assets/ +geosearch.url=https://geobusquedas-sigc.juntadeandalucia.es geosearch.core=sigc geosearch.handler=/search? geosearch.distance=600 geosearch.spatialField=geom geosearch.rows=20 geosearchbylocation.rows=100 -geoprint.url=//geoprint-sigc.juntadeandalucia.es/geoprint/pdf -geoprint2.url=//geoprint.desarrollo.guadaltel.es/print/SIGC -geoprint.url_application=//geoprint.desarrollo.guadaltel.es +geoprint.url=https://geoprint-sigc.juntadeandalucia.es/geoprint/pdf +geoprint2.url=https://geoprint.desarrollo.guadaltel.es/print/SIGC +geoprint.url_application=https://geoprint.desarrollo.guadaltel.es geoprint.dpi=120 geoprint.format=pdf geoprint.template=A4 landscape (SIGC) geoprint.force_scale=false geoprint.legend=true -wmc.urls=//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/mapa.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/hibrido.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/satelite.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_callejero.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_hibrido.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_satelite.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/contextCallejeroCache.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/contextCallejero.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/contextIDEA.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/contextOrtofoto2009.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/callejero2011cache.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/ortofoto2011cache.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/hibrido2011cache.xml,//sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/contextOrtofoto.xml +wmc.urls=https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/mapa.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/hibrido.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/satelite.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_callejero.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_hibrido.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/context_cdau_satelite.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/contextCallejeroCache.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/contextCallejero.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/contextIDEA.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/contextOrtofoto2009.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/callejero2011cache.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/ortofoto2011cache.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/hibrido2011cache.xml,https://sigc-dev.desarrollo.guadaltel.es/mapea6/files/wmc/contextOrtofoto.xml wmc.predefinedNames=mapa,hibrido,satelite,cdau,cdau_hibrido,cdau_satelite,callejerocacheado,callejero,idea,ortofoto09,callejero2011cache,ortofoto2011cache,hibrido2011cache,ortofoto wmc.names=Mapa,Hibrido,Satelite,Callejero,Hibrido,Satelite,mapa callejero cache,mapa del callejero,mapa idea,mapa ortofoto09,Callejero,Ortofoto,Híbrido,mapa ortofoto mapea.proj.default=EPSG:25830*m panels.tools.controls=measurebar,measurelength,measureclear,measurearea,getfeatureinfo panels.edition.controls=drawfeature,modifyfeature,deletefeature,editattribute,savefeature,clearfeature -searchstreet.url=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs -searchstreet.urlcodineautocomplete=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio -searchstreet.urlcomprobarine=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne -searchstreet.normalizar=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar +searchstreet.url=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs +searchstreet.urlcodineautocomplete=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio +searchstreet.urlcomprobarine=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne +searchstreet.normalizar=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar autocomplete.minLength=3 autocomplete.delaytime=750 autocomplete.limit=10 tile.mappings.tiledNames=base,SPOT_Andalucia,orto_2010-11_25830,CallejeroCompleto,orto_2010-11_23030 -tile.mappings.tiledUrls=//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.ideandalucia.es/geowebcache/service/wms?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,//www.ideandalucia.es/geowebcache/service/wms? +tile.mappings.tiledUrls=https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.ideandalucia.es/geowebcache/service/wms?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,https://www.ideandalucia.es/geowebcache/service/wms? tile.mappings.names=CDAU_base,mosaico_spot_2005,orto_2010-11,CallejeroCompleto,orto_2010-11 -tile.mappings.urls=//www.callejerodeandalucia.es/servicios/base/wms?,//www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,//www.ideandalucia.es/wms/ortofoto2010?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms?,//www.ideandalucia.es/wms/ortofoto2010? +tile.mappings.urls=https://www.callejerodeandalucia.es/servicios/base/wms?,https://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,https://www.ideandalucia.es/wms/ortofoto2010?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms?,https://www.ideandalucia.es/wms/ortofoto2010? attributetable.pages=5 # rest configuration controls=scale,scaleline,panzoombar,panzoom,layerswitcher,mouse,overviewmap,location,rotate,getfeatureinfo,navtoolbar diff --git a/mapea-parent/src/main/filters/mapea-local.properties b/mapea-parent/src/main/filters/mapea-local.properties index afa1b9c11..6bcfc20cf 100644 --- a/mapea-parent/src/main/filters/mapea-local.properties +++ b/mapea-parent/src/main/filters/mapea-local.properties @@ -1,41 +1,41 @@ mobile.width=768 -mapea.url=//localhost:8888/mapea6 -mapea.proxy.url=//localhost:8888/mapea6/api/proxy -mapea.proxy_post.url=//localhost:8888/mapea6/proxyPost +mapea.url=https://localhost:8888/mapea6 +mapea.proxy.url=https://localhost:8888/mapea6/api/proxy +mapea.proxy_post.url=https://localhost:8888/mapea6/proxyPost mapea.templates.path=/files/templates/ -mapea.theme.url=//localhost:8888/mapea6/assets/ -geosearch.url=//geobusquedas-sigc.juntadeandalucia.es +mapea.theme.url=https://localhost:8888/mapea6/assets/ +geosearch.url=https://geobusquedas-sigc.juntadeandalucia.es geosearch.core=sigc geosearch.handler=/search? geosearch.distance=600 geosearch.spatialField=geom geosearch.rows=20 geosearchbylocation.rows=100 -geoprint.url=//geoprint-sigc.juntadeandalucia.es/geoprint/pdf -geoprint2.url=//geoprint.desarrollo.guadaltel.es/print/SIGC -geoprint.url_application=//geoprint.desarrollo.guadaltel.es +geoprint.url=https://geoprint-sigc.juntadeandalucia.es/geoprint/pdf +geoprint2.url=https://geoprint.desarrollo.guadaltel.es/print/SIGC +geoprint.url_application=https://geoprint.desarrollo.guadaltel.es geoprint.dpi=120 geoprint.format=pdf geoprint.template=A4 landscape (SIGC) geoprint.force_scale=false geoprint.legend=true -wmc.urls=//localhost:8888/mapea6/files/wmc/context_cdau_callejero.xml,//localhost:8888/mapea6/files/wmc/context_cdau_hibrido.xml,//localhost:8888/mapea6/files/wmc/context_cdau_satelite.xml,//localhost:8888/mapea6/files/wmc/contextCallejeroCache.xml,//localhost:8888/mapea6/files/wmc/contextCallejero.xml,//localhost:8888/mapea6/files/wmc/contextIDEA.xml,//localhost:8888/mapea6/files/wmc/contextOrtofoto2009.xml,//localhost:8888/mapea6/files/wmc/callejero2011cache.xml,//localhost:8888/mapea6/files/wmc/ortofoto2011cache.xml,//localhost:8888/mapea6/files/wmc/hibrido2011cache.xml,//localhost:8888/mapea6/files/wmc/contextOrtofoto.xml +wmc.urls=https://localhost:8888/mapea6/files/wmc/context_cdau_callejero.xml,https://localhost:8888/mapea6/files/wmc/context_cdau_hibrido.xml,https://localhost:8888/mapea6/files/wmc/context_cdau_satelite.xml,https://localhost:8888/mapea6/files/wmc/contextCallejeroCache.xml,https://localhost:8888/mapea6/files/wmc/contextCallejero.xml,https://localhost:8888/mapea6/files/wmc/contextIDEA.xml,https://localhost:8888/mapea6/files/wmc/contextOrtofoto2009.xml,https://localhost:8888/mapea6/files/wmc/callejero2011cache.xml,https://localhost:8888/mapea6/files/wmc/ortofoto2011cache.xml,https://localhost:8888/mapea6/files/wmc/hibrido2011cache.xml,https://localhost:8888/mapea6/files/wmc/contextOrtofoto.xml wmc.predefinedNames=cdau,cdau_hibrido,cdau_satelite,callejerocacheado,callejero,idea,ortofoto09,callejero2011cache,ortofoto2011cache,hibrido2011cache,ortofoto wmc.names=Callejero,Satelite,Hibrido,mapa callejero cache,mapa del callejero,mapa idea,mapa ortofoto09,Callejero,Ortofoto,H�brido,mapa ortofoto mapea.proj.default=EPSG:25830*m panels.tools.controls=measurebar,measurelength,measureclear,measurearea,getfeatureinfo panels.edition.controls=drawfeature,modifyfeature,deletefeature,editattribute,savefeature,clearfeature -searchstreet.url=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs -searchstreet.urlcodineautocomplete=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio -searchstreet.urlcomprobarine=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne -searchstreet.normalizar=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar +searchstreet.url=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs +searchstreet.urlcodineautocomplete=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio +searchstreet.urlcomprobarine=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne +searchstreet.normalizar=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar autocomplete.minLength=3 autocomplete.delaytime=750 autocomplete.limit=10 tile.mappings.tiledNames=base,SPOT_Andalucia,orto_2010-11_25830,CallejeroCompleto,orto_2010-11_23030 -tile.mappings.tiledUrls=//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.ideandalucia.es/geowebcache/service/wms?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,//www.ideandalucia.es/geowebcache/service/wms? +tile.mappings.tiledUrls=https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.ideandalucia.es/geowebcache/service/wms?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,https://www.ideandalucia.es/geowebcache/service/wms? tile.mappings.names=CDAU_base,mosaico_spot_2005,orto_2010-11,CallejeroCompleto,orto_2010-11 -tile.mappings.urls=//www.callejerodeandalucia.es/servicios/base/wms?,//www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,//www.ideandalucia.es/wms/ortofoto2010?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms?,//www.ideandalucia.es/wms/ortofoto2010? +tile.mappings.urls=https://www.callejerodeandalucia.es/servicios/base/wms?,https://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,https://www.ideandalucia.es/wms/ortofoto2010?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms?,https://www.ideandalucia.es/wms/ortofoto2010? attributetable.pages=5 # rest configuration controls=scale,scaleline,panzoombar,panzoom,layerswitcher,mouse,overviewmap,location,rotate,getfeatureinfo,navtoolbar diff --git a/mapea-parent/src/main/filters/mapea-preproduccion.properties b/mapea-parent/src/main/filters/mapea-preproduccion.properties index 36e3d79f9..75c512af8 100644 --- a/mapea-parent/src/main/filters/mapea-preproduccion.properties +++ b/mapea-parent/src/main/filters/mapea-preproduccion.properties @@ -1,41 +1,41 @@ mobile.width=768 -mapea.url=//$URL_MAPEA4 -mapea.proxy.url=//$URL_MAPEA4/api/proxy -mapea.proxy_post.url=//$URL_MAPEA4/proxyPost +mapea.url=https://$URL_MAPEA4 +mapea.proxy.url=https://$URL_MAPEA4/api/proxy +mapea.proxy_post.url=https://$URL_MAPEA4/proxyPost mapea.templates.path=/files/templates/ -mapea.theme.url=//$URL_MAPEA4/assets/ -geosearch.url=//geobusquedas-sigc.juntadeandalucia.es +mapea.theme.url=https://$URL_MAPEA4/assets/ +geosearch.url=https://geobusquedas-sigc.juntadeandalucia.es geosearch.core=sigc geosearch.handler=/search? geosearch.distance=600 geosearch.spatialField=geom geosearch.rows=20 geosearchbylocation.rows=100 -geoprint.url=//geoprint-sigc.juntadeandalucia.es/geoprint/pdf -geoprint2.url=//geoprint.desarrollo.guadaltel.es/print/SIGC -geoprint.url_application=//geoprint.desarrollo.guadaltel.es +geoprint.url=https://geoprint-sigc.juntadeandalucia.es/geoprint/pdf +geoprint2.url=https://geoprint.desarrollo.guadaltel.es/print/SIGC +geoprint.url_application=https://geoprint.desarrollo.guadaltel.es geoprint.dpi=120 geoprint.format=pdf geoprint.template=A4 landscape (SIGC) geoprint.force_scale=false geoprint.legend=true -wmc.urls=//$URL_MAPEA4/files/wmc/mapa.xml,//$URL_MAPEA4/files/wmc/hibrido.xml,//$URL_MAPEA4/files/wmc/satelite.xml,//$URL_MAPEA4/files/wmc/context_cdau_callejero.xml,//$URL_MAPEA4/files/wmc/context_cdau_hibrido.xml,//$URL_MAPEA4/files/wmc/context_cdau_satelite.xml,//$URL_MAPEA4/files/wmc/contextCallejeroCache.xml,//$URL_MAPEA4/files/wmc/contextCallejero.xml,//$URL_MAPEA4/files/wmc/contextIDEA.xml,//$URL_MAPEA4/files/wmc/contextOrtofoto2009.xml,//$URL_MAPEA4/files/wmc/callejero2011cache.xml,//$URL_MAPEA4/files/wmc/ortofoto2011cache.xml,//$URL_MAPEA4/files/wmc/hibrido2011cache.xml,//$URL_MAPEA4/files/wmc/contextOrtofoto.xml +wmc.urls=https://$URL_MAPEA4/files/wmc/mapa.xml,https://$URL_MAPEA4/files/wmc/hibrido.xml,https://$URL_MAPEA4/files/wmc/satelite.xml,https://$URL_MAPEA4/files/wmc/context_cdau_callejero.xml,https://$URL_MAPEA4/files/wmc/context_cdau_hibrido.xml,https://$URL_MAPEA4/files/wmc/context_cdau_satelite.xml,https://$URL_MAPEA4/files/wmc/contextCallejeroCache.xml,https://$URL_MAPEA4/files/wmc/contextCallejero.xml,https://$URL_MAPEA4/files/wmc/contextIDEA.xml,https://$URL_MAPEA4/files/wmc/contextOrtofoto2009.xml,https://$URL_MAPEA4/files/wmc/callejero2011cache.xml,https://$URL_MAPEA4/files/wmc/ortofoto2011cache.xml,https://$URL_MAPEA4/files/wmc/hibrido2011cache.xml,https://$URL_MAPEA4/files/wmc/contextOrtofoto.xml wmc.predefinedNames=mapa,hibrido,satelite,cdau,cdau_hibrido,cdau_satelite,callejerocacheado,callejero,idea,ortofoto09,callejero2011cache,ortofoto2011cache,hibrido2011cache,ortofoto wmc.names=Mapa,Hibrido,Satelite,Callejero,Hibrido,Satelite,mapa callejero cache,mapa del callejero,mapa idea,mapa ortofoto09,Callejero,Ortofoto,Híbrido,mapa ortofoto mapea.proj.default=EPSG:25830*m panels.tools.controls=measurebar,measurelength,measureclear,measurearea,getfeatureinfo panels.edition.controls=drawfeature,modifyfeature,deletefeature,editattribute,savefeature,clearfeature -searchstreet.url=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs -searchstreet.urlcodineautocomplete=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio -searchstreet.urlcomprobarine=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne -searchstreet.normalizar=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar +searchstreet.url=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs +searchstreet.urlcodineautocomplete=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio +searchstreet.urlcomprobarine=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne +searchstreet.normalizar=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar autocomplete.minLength=3 autocomplete.delaytime=750 autocomplete.limit=10 tile.mappings.tiledNames=base,SPOT_Andalucia,orto_2010-11_25830,CallejeroCompleto,orto_2010-11_23030 -tile.mappings.tiledUrls=//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.ideandalucia.es/geowebcache/service/wms?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,//www.ideandalucia.es/geowebcache/service/wms? +tile.mappings.tiledUrls=https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.ideandalucia.es/geowebcache/service/wms?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,https://www.ideandalucia.es/geowebcache/service/wms? tile.mappings.names=CDAU_base,mosaico_spot_2005,orto_2010-11,CallejeroCompleto,orto_2010-11 -tile.mappings.urls=//www.callejerodeandalucia.es/servicios/base/wms?,//www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,//www.ideandalucia.es/wms/ortofoto2010?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms?,//www.ideandalucia.es/wms/ortofoto2010? +tile.mappings.urls=https://www.callejerodeandalucia.es/servicios/base/wms?,https://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,https://www.ideandalucia.es/wms/ortofoto2010?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms?,https://www.ideandalucia.es/wms/ortofoto2010? attributetable.pages=5 # rest configuration controls=scale,scaleline,panzoombar,panzoom,layerswitcher,mouse,overviewmap,location,rotate,getfeatureinfo,navtoolbar diff --git a/mapea-parent/src/main/filters/mapea-produccion.properties b/mapea-parent/src/main/filters/mapea-produccion.properties index 36e3d79f9..75c512af8 100644 --- a/mapea-parent/src/main/filters/mapea-produccion.properties +++ b/mapea-parent/src/main/filters/mapea-produccion.properties @@ -1,41 +1,41 @@ mobile.width=768 -mapea.url=//$URL_MAPEA4 -mapea.proxy.url=//$URL_MAPEA4/api/proxy -mapea.proxy_post.url=//$URL_MAPEA4/proxyPost +mapea.url=https://$URL_MAPEA4 +mapea.proxy.url=https://$URL_MAPEA4/api/proxy +mapea.proxy_post.url=https://$URL_MAPEA4/proxyPost mapea.templates.path=/files/templates/ -mapea.theme.url=//$URL_MAPEA4/assets/ -geosearch.url=//geobusquedas-sigc.juntadeandalucia.es +mapea.theme.url=https://$URL_MAPEA4/assets/ +geosearch.url=https://geobusquedas-sigc.juntadeandalucia.es geosearch.core=sigc geosearch.handler=/search? geosearch.distance=600 geosearch.spatialField=geom geosearch.rows=20 geosearchbylocation.rows=100 -geoprint.url=//geoprint-sigc.juntadeandalucia.es/geoprint/pdf -geoprint2.url=//geoprint.desarrollo.guadaltel.es/print/SIGC -geoprint.url_application=//geoprint.desarrollo.guadaltel.es +geoprint.url=https://geoprint-sigc.juntadeandalucia.es/geoprint/pdf +geoprint2.url=https://geoprint.desarrollo.guadaltel.es/print/SIGC +geoprint.url_application=https://geoprint.desarrollo.guadaltel.es geoprint.dpi=120 geoprint.format=pdf geoprint.template=A4 landscape (SIGC) geoprint.force_scale=false geoprint.legend=true -wmc.urls=//$URL_MAPEA4/files/wmc/mapa.xml,//$URL_MAPEA4/files/wmc/hibrido.xml,//$URL_MAPEA4/files/wmc/satelite.xml,//$URL_MAPEA4/files/wmc/context_cdau_callejero.xml,//$URL_MAPEA4/files/wmc/context_cdau_hibrido.xml,//$URL_MAPEA4/files/wmc/context_cdau_satelite.xml,//$URL_MAPEA4/files/wmc/contextCallejeroCache.xml,//$URL_MAPEA4/files/wmc/contextCallejero.xml,//$URL_MAPEA4/files/wmc/contextIDEA.xml,//$URL_MAPEA4/files/wmc/contextOrtofoto2009.xml,//$URL_MAPEA4/files/wmc/callejero2011cache.xml,//$URL_MAPEA4/files/wmc/ortofoto2011cache.xml,//$URL_MAPEA4/files/wmc/hibrido2011cache.xml,//$URL_MAPEA4/files/wmc/contextOrtofoto.xml +wmc.urls=https://$URL_MAPEA4/files/wmc/mapa.xml,https://$URL_MAPEA4/files/wmc/hibrido.xml,https://$URL_MAPEA4/files/wmc/satelite.xml,https://$URL_MAPEA4/files/wmc/context_cdau_callejero.xml,https://$URL_MAPEA4/files/wmc/context_cdau_hibrido.xml,https://$URL_MAPEA4/files/wmc/context_cdau_satelite.xml,https://$URL_MAPEA4/files/wmc/contextCallejeroCache.xml,https://$URL_MAPEA4/files/wmc/contextCallejero.xml,https://$URL_MAPEA4/files/wmc/contextIDEA.xml,https://$URL_MAPEA4/files/wmc/contextOrtofoto2009.xml,https://$URL_MAPEA4/files/wmc/callejero2011cache.xml,https://$URL_MAPEA4/files/wmc/ortofoto2011cache.xml,https://$URL_MAPEA4/files/wmc/hibrido2011cache.xml,https://$URL_MAPEA4/files/wmc/contextOrtofoto.xml wmc.predefinedNames=mapa,hibrido,satelite,cdau,cdau_hibrido,cdau_satelite,callejerocacheado,callejero,idea,ortofoto09,callejero2011cache,ortofoto2011cache,hibrido2011cache,ortofoto wmc.names=Mapa,Hibrido,Satelite,Callejero,Hibrido,Satelite,mapa callejero cache,mapa del callejero,mapa idea,mapa ortofoto09,Callejero,Ortofoto,Híbrido,mapa ortofoto mapea.proj.default=EPSG:25830*m panels.tools.controls=measurebar,measurelength,measureclear,measurearea,getfeatureinfo panels.edition.controls=drawfeature,modifyfeature,deletefeature,editattribute,savefeature,clearfeature -searchstreet.url=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs -searchstreet.urlcodineautocomplete=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio -searchstreet.urlcomprobarine=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne -searchstreet.normalizar=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar +searchstreet.url=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs +searchstreet.urlcodineautocomplete=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio +searchstreet.urlcomprobarine=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne +searchstreet.normalizar=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar autocomplete.minLength=3 autocomplete.delaytime=750 autocomplete.limit=10 tile.mappings.tiledNames=base,SPOT_Andalucia,orto_2010-11_25830,CallejeroCompleto,orto_2010-11_23030 -tile.mappings.tiledUrls=//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.ideandalucia.es/geowebcache/service/wms?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,//www.ideandalucia.es/geowebcache/service/wms? +tile.mappings.tiledUrls=https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.ideandalucia.es/geowebcache/service/wms?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,https://www.ideandalucia.es/geowebcache/service/wms? tile.mappings.names=CDAU_base,mosaico_spot_2005,orto_2010-11,CallejeroCompleto,orto_2010-11 -tile.mappings.urls=//www.callejerodeandalucia.es/servicios/base/wms?,//www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,//www.ideandalucia.es/wms/ortofoto2010?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms?,//www.ideandalucia.es/wms/ortofoto2010? +tile.mappings.urls=https://www.callejerodeandalucia.es/servicios/base/wms?,https://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,https://www.ideandalucia.es/wms/ortofoto2010?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms?,https://www.ideandalucia.es/wms/ortofoto2010? attributetable.pages=5 # rest configuration controls=scale,scaleline,panzoombar,panzoom,layerswitcher,mouse,overviewmap,location,rotate,getfeatureinfo,navtoolbar diff --git a/mapea-parent/src/main/filters/mapea-pruebas.properties b/mapea-parent/src/main/filters/mapea-pruebas.properties index 36e3d79f9..75c512af8 100644 --- a/mapea-parent/src/main/filters/mapea-pruebas.properties +++ b/mapea-parent/src/main/filters/mapea-pruebas.properties @@ -1,41 +1,41 @@ mobile.width=768 -mapea.url=//$URL_MAPEA4 -mapea.proxy.url=//$URL_MAPEA4/api/proxy -mapea.proxy_post.url=//$URL_MAPEA4/proxyPost +mapea.url=https://$URL_MAPEA4 +mapea.proxy.url=https://$URL_MAPEA4/api/proxy +mapea.proxy_post.url=https://$URL_MAPEA4/proxyPost mapea.templates.path=/files/templates/ -mapea.theme.url=//$URL_MAPEA4/assets/ -geosearch.url=//geobusquedas-sigc.juntadeandalucia.es +mapea.theme.url=https://$URL_MAPEA4/assets/ +geosearch.url=https://geobusquedas-sigc.juntadeandalucia.es geosearch.core=sigc geosearch.handler=/search? geosearch.distance=600 geosearch.spatialField=geom geosearch.rows=20 geosearchbylocation.rows=100 -geoprint.url=//geoprint-sigc.juntadeandalucia.es/geoprint/pdf -geoprint2.url=//geoprint.desarrollo.guadaltel.es/print/SIGC -geoprint.url_application=//geoprint.desarrollo.guadaltel.es +geoprint.url=https://geoprint-sigc.juntadeandalucia.es/geoprint/pdf +geoprint2.url=https://geoprint.desarrollo.guadaltel.es/print/SIGC +geoprint.url_application=https://geoprint.desarrollo.guadaltel.es geoprint.dpi=120 geoprint.format=pdf geoprint.template=A4 landscape (SIGC) geoprint.force_scale=false geoprint.legend=true -wmc.urls=//$URL_MAPEA4/files/wmc/mapa.xml,//$URL_MAPEA4/files/wmc/hibrido.xml,//$URL_MAPEA4/files/wmc/satelite.xml,//$URL_MAPEA4/files/wmc/context_cdau_callejero.xml,//$URL_MAPEA4/files/wmc/context_cdau_hibrido.xml,//$URL_MAPEA4/files/wmc/context_cdau_satelite.xml,//$URL_MAPEA4/files/wmc/contextCallejeroCache.xml,//$URL_MAPEA4/files/wmc/contextCallejero.xml,//$URL_MAPEA4/files/wmc/contextIDEA.xml,//$URL_MAPEA4/files/wmc/contextOrtofoto2009.xml,//$URL_MAPEA4/files/wmc/callejero2011cache.xml,//$URL_MAPEA4/files/wmc/ortofoto2011cache.xml,//$URL_MAPEA4/files/wmc/hibrido2011cache.xml,//$URL_MAPEA4/files/wmc/contextOrtofoto.xml +wmc.urls=https://$URL_MAPEA4/files/wmc/mapa.xml,https://$URL_MAPEA4/files/wmc/hibrido.xml,https://$URL_MAPEA4/files/wmc/satelite.xml,https://$URL_MAPEA4/files/wmc/context_cdau_callejero.xml,https://$URL_MAPEA4/files/wmc/context_cdau_hibrido.xml,https://$URL_MAPEA4/files/wmc/context_cdau_satelite.xml,https://$URL_MAPEA4/files/wmc/contextCallejeroCache.xml,https://$URL_MAPEA4/files/wmc/contextCallejero.xml,https://$URL_MAPEA4/files/wmc/contextIDEA.xml,https://$URL_MAPEA4/files/wmc/contextOrtofoto2009.xml,https://$URL_MAPEA4/files/wmc/callejero2011cache.xml,https://$URL_MAPEA4/files/wmc/ortofoto2011cache.xml,https://$URL_MAPEA4/files/wmc/hibrido2011cache.xml,https://$URL_MAPEA4/files/wmc/contextOrtofoto.xml wmc.predefinedNames=mapa,hibrido,satelite,cdau,cdau_hibrido,cdau_satelite,callejerocacheado,callejero,idea,ortofoto09,callejero2011cache,ortofoto2011cache,hibrido2011cache,ortofoto wmc.names=Mapa,Hibrido,Satelite,Callejero,Hibrido,Satelite,mapa callejero cache,mapa del callejero,mapa idea,mapa ortofoto09,Callejero,Ortofoto,Híbrido,mapa ortofoto mapea.proj.default=EPSG:25830*m panels.tools.controls=measurebar,measurelength,measureclear,measurearea,getfeatureinfo panels.edition.controls=drawfeature,modifyfeature,deletefeature,editattribute,savefeature,clearfeature -searchstreet.url=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs -searchstreet.urlcodineautocomplete=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio -searchstreet.urlcomprobarine=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne -searchstreet.normalizar=//ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar +searchstreet.url=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/geocoderMunProvSrs +searchstreet.urlcodineautocomplete=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/autocompletarDireccionMunicipio +searchstreet.urlcomprobarine=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/comprobarCodIne +searchstreet.normalizar=https://ws248.juntadeandalucia.es/EXT_PUB_CallejeroREST/normalizar autocomplete.minLength=3 autocomplete.delaytime=750 autocomplete.limit=10 tile.mappings.tiledNames=base,SPOT_Andalucia,orto_2010-11_25830,CallejeroCompleto,orto_2010-11_23030 -tile.mappings.tiledUrls=//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,//www.ideandalucia.es/geowebcache/service/wms?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,//www.ideandalucia.es/geowebcache/service/wms? +tile.mappings.tiledUrls=https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.callejerodeandalucia.es/servicios/base/gwc/service/wms?,https://www.ideandalucia.es/geowebcache/service/wms?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms-tiled?,https://www.ideandalucia.es/geowebcache/service/wms? tile.mappings.names=CDAU_base,mosaico_spot_2005,orto_2010-11,CallejeroCompleto,orto_2010-11 -tile.mappings.urls=//www.callejerodeandalucia.es/servicios/base/wms?,//www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,//www.ideandalucia.es/wms/ortofoto2010?,//www.juntadeandalucia.es/servicios/mapas/callejero/wms?,//www.ideandalucia.es/wms/ortofoto2010? +tile.mappings.urls=https://www.callejerodeandalucia.es/servicios/base/wms?,https://www.juntadeandalucia.es/medioambiente/mapwms/REDIAM_SPOT_Andalucia_2005?,https://www.ideandalucia.es/wms/ortofoto2010?,https://www.juntadeandalucia.es/servicios/mapas/callejero/wms?,https://www.ideandalucia.es/wms/ortofoto2010? attributetable.pages=5 # rest configuration controls=scale,scaleline,panzoombar,panzoom,layerswitcher,mouse,overviewmap,location,rotate,getfeatureinfo,navtoolbar diff --git a/mapea-proxy/pom.xml b/mapea-proxy/pom.xml index 1e0fc4f42..dc5ed3eb2 100644 --- a/mapea-proxy/pom.xml +++ b/mapea-proxy/pom.xml @@ -9,7 +9,7 @@ es.juntadeandalucia.mapea mapea-parent - 6.2.0 + 6.3.0 ../mapea-parent/pom.xml diff --git a/mapea-proxy/src/main/java/es/juntadeandalucia/mapea/proxy/ProxyRedirect.java b/mapea-proxy/src/main/java/es/juntadeandalucia/mapea/proxy/ProxyRedirect.java index ef9485470..bafa76662 100755 --- a/mapea-proxy/src/main/java/es/juntadeandalucia/mapea/proxy/ProxyRedirect.java +++ b/mapea-proxy/src/main/java/es/juntadeandalucia/mapea/proxy/ProxyRedirect.java @@ -55,6 +55,7 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.Enumeration; @@ -69,17 +70,27 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; -import org.apache.commons.httpclient.Header; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.httpclient.NameValuePair; -import org.apache.commons.httpclient.methods.GetMethod; -import org.apache.commons.httpclient.methods.PostMethod; -import org.apache.commons.httpclient.methods.StringRequestEntity; -import org.apache.commons.httpclient.params.HttpClientParams; -import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.io.IOUtils; +import org.apache.http.Header; +import org.apache.http.HttpEntity; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.Credentials; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.client.HttpClient; +import org.apache.http.client.ResponseHandler; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.ByteArrayEntity; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.apache.http.impl.client.BasicResponseHandler; +import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.protocol.HTTP; import org.apache.log4j.Logger; import es.guadaltel.framework.ticket.Ticket; @@ -130,18 +141,20 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro String url = serverUrl.replaceAll("\\&?\\??mapeaop=geoprint", ""); url = serverUrl.replaceAll("\\&?\\??mapeaop=getcapabilities", ""); url = serverUrl.replaceAll("\\&?\\??mapeaop=wmsinfo", ""); - HttpClient client = new HttpClient(); - GetMethod httpget = null; + + HttpClient client = HttpClientBuilder.create().build(); + HttpGet httpget = null; + try { - httpget = new GetMethod(url); - HttpClientParams params = client.getParams(); - params.setIntParameter(HttpClientParams.MAX_REDIRECTS, numMaxRedirects); - client.executeMethod(httpget); + httpget = new HttpGet(url); + httpget.setConfig(RequestConfig.custom().setMaxRedirects(numMaxRedirects).build()); + + HttpResponse httpResponse = client.execute(httpget); // REDIRECTS MANAGEMENT - if (httpget.getStatusCode() == HttpStatus.SC_OK) { + if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // PATH_SECURITY_PROXY - AG - Header[] respHeaders = httpget.getResponseHeaders(); - int compSize = httpget.getResponseBody().length; + Header[] respHeaders = httpResponse.getAllHeaders(); + int compSize = (int) httpResponse.getEntity().getContentLength(); ArrayList
    headerList = new ArrayList
    (Arrays.asList(respHeaders)); String headersString = headerList.toString(); boolean checkedContent = checkContent(headersString, compSize, serverUrl); @@ -171,7 +184,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro } else if (GETINFO_HTML_REGEX.matcher(requesteredUrl).matches()) { response.setContentType("text/html"); } - InputStream st = httpget.getResponseBodyAsStream(); + InputStream st = httpResponse.getEntity().getContent(); ServletOutputStream sos = response.getOutputStream(); IOUtils.copy(st, sos); } else { @@ -179,7 +192,7 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro log.error(strErrorMessage); } } else { - strErrorMessage = "Unexpected failure: " + httpget.getStatusLine().toString(); + strErrorMessage = "Unexpected failure: " + httpResponse.getStatusLine().toString(); log.error(strErrorMessage); } httpget.releaseConnection(); @@ -191,7 +204,6 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro } } } else { - // String errorXML = strErrorMessage; String errorXML = "Error en el parametro url de entrada"; response.setContentType("text/xml"); try { @@ -223,48 +235,38 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr legend = true; } serverUrl = checkTypeRequest(serverUrl); - // log.info("serverUrl ckecked: " + serverUrl); if (!serverUrl.equals("ERROR")) { if (serverUrl.startsWith("http://") || serverUrl.startsWith("https://")) { - PostMethod httppost = null; + HttpPost httppost = null; try { - - HttpClient client = new HttpClient(); - httppost = new PostMethod(serverUrl); - // PATH - Enumeration enume = request.getHeaderNames(); - ArrayList removeHeaders = new ArrayList<>(Arrays.asList("accept-encoding")); - while (enume.hasMoreElements()) { - String name = (String) enume.nextElement(); - String value = request.getHeader(name); - log.debug("request header:" + name + ":" + value); - if (!removeHeaders.contains(name.toLowerCase())) { - httppost.addRequestHeader(name, value); + String host = System.getProperty("https.proxyHost"); + HttpClientBuilder clientBuilder = HttpClientBuilder.create(); + clientBuilder.setRetryHandler(new DefaultHttpRequestRetryHandler(3, false)); + if (host != null) { + Integer port = Integer.parseInt(System.getProperty("https.proxyPort")); + clientBuilder.useSystemProperties(); + String user = System.getProperty("https.proxyUser"); + if (user != null) { + Credentials credentials = new UsernamePasswordCredentials(user, + System.getProperty("https.proxyPassword")); + AuthScope authScope = new AuthScope(host, port); + CredentialsProvider credsProvider = new BasicCredentialsProvider(); + credsProvider.setCredentials(authScope, credentials); + clientBuilder.setDefaultCredentialsProvider(credsProvider); } } - - httppost.setDoAuthentication(false); - httppost.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, - new DefaultHttpMethodRetryHandler(3, false)); - // FIN_PATH - // PATH_MAPEAEDITA_SECURITY - AP - // PATCH_TICKET_MJM-20112405-POST - String authorizationValue = request.getHeader(AUTHORIZATION); // ADD_SECURITY_20091210 + HttpClient client = clientBuilder.build(); + httppost = new HttpPost(serverUrl); + String authorizationValue = request.getHeader(AUTHORIZATION); if (authorizationValue == null) { - // The 'Authorization' header must be in this form -> - // Authorization: Basic - // 'encodedLogin' is a string in the form 'user:pass' - // that has been encoded by way of the Base64 algorithm. - // More info on this can be found at - // http://en.wikipedia.org/wiki/Basic_access_authentication String user = (String) request.getSession().getAttribute("user"); String pass = (String) request.getSession().getAttribute("pass"); if (user != null && pass != null) { String userAndPass = user + ":" + pass; String encodedLogin = new String( org.apache.commons.codec.binary.Base64.encodeBase64(userAndPass.getBytes())); - httppost.addRequestHeader(AUTHORIZATION, "Basic " + encodedLogin); - } else { // MJM - 20110520 + httppost.setHeader(AUTHORIZATION, "Basic " + encodedLogin); + } else { String ticketParameter = request.getParameter("ticket"); if (ticketParameter != null) { ticketParameter = ticketParameter.trim(); @@ -277,7 +279,7 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr String userAndPass = user + ":" + pass; String encodedLogin = new String(org.apache.commons.codec.binary.Base64 .encodeBase64(userAndPass.getBytes())); - httppost.addRequestHeader(AUTHORIZATION, "Basic " + encodedLogin); + httppost.setHeader(AUTHORIZATION, "Basic " + encodedLogin); } catch (Exception e) { log.info("-------------------------------------------"); log.info("EXCEPCTION THROWED BY PROXYREDIRECT CLASS"); @@ -289,51 +291,39 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr } } } else { - httppost.addRequestHeader(AUTHORIZATION, authorizationValue); + httppost.setHeader(AUTHORIZATION, authorizationValue); } - // FIN_PATH_TICKET_MJM-20112405-POST - // FIN_PATH_MAPEAEDITA_SECURITY - AP + String body = inputStreamAsString(request.getInputStream()); - StringRequestEntity bodyEntity = new StringRequestEntity(body, null, null); - if (0 == httppost.getParameters().length) { - log.debug("No Name/Value pairs found ... pushing as received"); // PATCH - httppost.setRequestEntity(bodyEntity); // PATCH - } - if (log.isDebugEnabled()) { - log.debug("Body = " + body); - NameValuePair[] nameValuePairs = httppost.getParameters(); - log.debug("NameValuePairs found: " + nameValuePairs.length); - for (int i = 0; i < nameValuePairs.length; ++i) { - log.debug("parameters:" + nameValuePairs[i].toString()); - } - } + HttpEntity bodyEntity = new ByteArrayEntity(body.getBytes("UTF-8")); + httppost.setEntity(bodyEntity); // PATCH + if (!legend) - client.getParams().setParameter("http.protocol.content-charset", "UTF-8"); + request.setCharacterEncoding("UTF-8"); if (soap) { - httppost.addRequestHeader("SOAPAction", serverUrl); + httppost.setHeader("SOAPAction", serverUrl); } - client.executeMethod(httppost); + + HttpResponse httpResponse = client.execute(httppost); + // PATH_FOLLOW_REDIRECT_POST int j = 0; String redirectLocation; - Header locationHeader = httppost.getResponseHeader("location"); - while (locationHeader != null && j < numMaxRedirects) { - redirectLocation = locationHeader.getValue(); - // AGG 20111304 Añadimos el cuerpo de la petición POST a - // la nueva petición redirigida - // String bodyPost = httppost.getResponseBodyAsString(); - StringRequestEntity bodyEntityPost = new StringRequestEntity(body, null, null); + Header[] locationHeader = httpResponse.getHeaders("location"); + while (locationHeader.length != 0 && j < numMaxRedirects) { + redirectLocation = locationHeader[0].getValue(); + StringEntity bodyEntityPost = new StringEntity(body); httppost.releaseConnection(); - httppost = new PostMethod(redirectLocation); + httppost = new HttpPost(redirectLocation); // AGG 20110912 Añadidas cabeceras petición SOAP if (redirectLocation.toLowerCase().contains("wsdl")) { redirectLocation = serverUrl.replace("?wsdl", ""); - httppost.addRequestHeader("SOAPAction", redirectLocation); - httppost.addRequestHeader("Content-type", "text/xml"); + httppost.setHeader("SOAPAction", redirectLocation); + httppost.setHeader("Content-type", "text/xml"); } - httppost.setRequestEntity(bodyEntityPost); - client.executeMethod(httppost); - locationHeader = httppost.getResponseHeader("location"); + httppost.setEntity(bodyEntityPost); + httpResponse = client.execute(httppost); + locationHeader = httppost.getHeaders("location"); j++; } log.info("Number of followed redirections: " + j); @@ -342,27 +332,24 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr } // FIN_PATH_FOLLOW_REDIRECT_POST if (log.isDebugEnabled()) { - Header[] responseHeaders = httppost.getResponseHeaders(); + Header[] responseHeaders = httpResponse.getAllHeaders(); for (int i = 0; i < responseHeaders.length; ++i) { String headerName = responseHeaders[i].getName(); String headerValue = responseHeaders[i].getValue(); log.debug("responseHeaders:" + headerName + "=" + headerValue); } } - // dump response to out - if (httppost.getStatusCode() == HttpStatus.SC_OK) { + if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { // PATH_SECURITY_PROXY - AG - Header[] respHeaders = httppost.getResponseHeaders(); - int compSize = httppost.getResponseBody().length; - ArrayList
    headerList = new ArrayList
    (Arrays.asList(respHeaders)); - String headersString = headerList.toString(); + final Header[] respHeaders = httpResponse.getAllHeaders(); + final ResponseHandler handler = new BasicResponseHandler(); + final String responseBody = handler.handleResponse(httpResponse); + final int compSize = responseBody.length(); + final ArrayList
    headerList = new ArrayList
    (Arrays.asList(respHeaders)); + final String headersString = headerList.toString(); checkedContent = checkContent(headersString, compSize, serverUrl); // FIN_PATH_SECURITY_PROXY - AG if (checkedContent == true) { - /* - * checks if it has requested an getfeatureinfo to modify the response content - * type. - */ String requesteredUrl = request.getParameter("url"); if (GETINFO_PLAIN_REGEX.matcher(requesteredUrl).matches()) { response.setContentType("text/plain"); @@ -377,13 +364,12 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr response.setContentType("text/xml"); } if (legend) { - String responseBody = httppost.getResponseBodyAsString(); if (responseBody.contains("ServiceExceptionReport") && serverUrl.contains("LegendGraphic")) { response.sendRedirect("Componente/img/blank.gif"); } else { response.setContentLength(responseBody.length()); - PrintWriter out = response.getWriter(); + final PrintWriter out = response.getWriter(); out.print(responseBody); response.flushBuffer(); } @@ -397,36 +383,31 @@ public void doPost(HttpServletRequest request, HttpServletResponse response) thr response.setDateHeader("Expires", -1); // END patch // Copy request to response - InputStream st = httppost.getResponseBodyAsStream(); - final ServletOutputStream sos = response.getOutputStream(); - IOUtils.copy(st, sos); + final PrintWriter out = response.getWriter(); + out.print(responseBody); + response.flushBuffer(); } } else { - strErrorMessage += errorType; + strErrorMessage += errorType.toString(); log.error(strErrorMessage); } - } else if (httppost.getStatusCode() == HttpStatus.SC_UNAUTHORIZED) { + } else if (httpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_UNAUTHORIZED) { response.setStatus(HttpStatus.SC_UNAUTHORIZED); - response.addHeader(WWW_AUTHENTICATE, httppost.getResponseHeader(WWW_AUTHENTICATE).getValue()); + response.setHeader(WWW_AUTHENTICATE, httpResponse.getAllHeaders()[0].getName()); } else { - strErrorMessage = "Unexpected failure: ".concat(httppost.getStatusLine().toString()).concat(" ") - .concat(httppost.getResponseBodyAsString()); - log.error("Unexpected failure: " + httppost.getStatusLine().toString()); + strErrorMessage = "Unexpected failure: " + httpResponse.getStatusLine().getStatusCode() + + "".concat(" ") + httppost.getEntity().getContent(); + log.error("Unexpected failure: " + httpResponse.getStatusLine().getStatusCode()); } httppost.releaseConnection(); - // AGG 20110927 Avoid Throwable (change it with exceptions) } catch (Exception e) { log.error("Error al tratar el contenido de la peticion: " + e.getMessage(), e); } finally { - if (httppost != null) { - httppost.releaseConnection(); - } + httppost.releaseConnection(); } } else { strErrorMessage += "Only HTTP(S) protocol supported"; log.error("Only HTTP(S) protocol supported"); - // throw new - // ServletException("only HTTP(S) protocol supported"); } } // There are errors. diff --git a/mapea-rest/pom.xml b/mapea-rest/pom.xml index 71d9fbcd4..010be9ace 100644 --- a/mapea-rest/pom.xml +++ b/mapea-rest/pom.xml @@ -13,7 +13,7 @@ es.juntadeandalucia.mapea mapea-parent - 6.2.0 + 6.3.0 ../mapea-parent/pom.xml diff --git a/mapea-rest/src/main/java/es/juntadeandalucia/mapea/api/Proxy.java b/mapea-rest/src/main/java/es/juntadeandalucia/mapea/api/Proxy.java index 54353aa63..5fe9d065b 100644 --- a/mapea-rest/src/main/java/es/juntadeandalucia/mapea/api/Proxy.java +++ b/mapea-rest/src/main/java/es/juntadeandalucia/mapea/api/Proxy.java @@ -5,7 +5,6 @@ import java.io.InputStream; import java.util.Map; import java.util.ResourceBundle; -import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.servlet.ServletContext; @@ -17,11 +16,18 @@ import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; -import org.apache.commons.httpclient.Header; -import org.apache.commons.httpclient.HttpClient; -import org.apache.commons.httpclient.HttpException; -import org.apache.commons.httpclient.HttpStatus; -import org.apache.commons.httpclient.methods.GetMethod; +import org.apache.http.Header; +import org.apache.http.client.CredentialsProvider; +import org.apache.http.client.HttpClient; +import org.apache.http.HttpException; +import org.apache.http.HttpResponse; +import org.apache.http.HttpStatus; +import org.apache.http.auth.AuthScope; +import org.apache.http.auth.Credentials; +import org.apache.http.auth.UsernamePasswordCredentials; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.BasicCredentialsProvider; +import org.apache.http.impl.client.HttpClientBuilder; import org.apache.commons.io.IOUtils; import es.guadaltel.framework.ticket.Ticket; @@ -44,20 +50,17 @@ public class Proxy { private static final String AUTHORIZATION = "Authorization"; public ServletContext context_ = null; private static ResourceBundle configProperties = ResourceBundle.getBundle("configuration"); - private static final String THEME_URL = configProperties.getString("mapea.theme.url"); - private static final String LEGEND_ERROR = "/img/legend-error.png"; +// private static final String THEME_URL = configProperties.getString("mapea.theme.url"); +// private static final String LEGEND_ERROR = "/img/legend-error.png"; private static final int IMAGE_MAX_BYTE_SIZE = Integer.parseInt(configProperties.getString("max.image.size")); /** - * Proxy to execute a request to specified URL using JSONP protocol to avoid - * the Cross-Domain restriction. + * Proxy to execute a request to specified URL using JSONP protocol to avoid the + * Cross-Domain restriction. * - * @param url - * URL of the request - * @param op - * type of mapea operation - * @param callbackFn - * function to execute as callback + * @param url URL of the request + * @param op type of mapea operation + * @param callbackFn function to execute as callback * * @return the javascript code */ @@ -89,15 +92,12 @@ public String proxy(@QueryParam("url") String url, @QueryParam("ticket") String } /** - * Proxy to execute a request to specified URL using JSONP protocol to avoid - * the Cross-Domain restriction. + * Proxy to execute a request to specified URL using JSONP protocol to avoid the + * Cross-Domain restriction. * - * @param url - * URL of the request - * @param op - * type of mapea operation - * @param callbackFn - * function to execute as callback + * @param url URL of the request + * @param op type of mapea operation + * @param callbackFn function to execute as callback * * @return the javascript code */ @@ -137,19 +137,33 @@ public Response proxyImage(@QueryParam("url") String url) { /** * Sends a GET operation request to the URL and gets its response. * - * @param url - * URL of the request - * @param op - * type of mapea operation - * @param ticketParameter - * user ticket + * @param url URL of the request + * @param op type of mapea operation + * @param ticketParameter user ticket * * @return the response of the request */ private ProxyResponse get(String url, String ticketParameter) throws HttpException, IOException { ProxyResponse response = new ProxyResponse(); - HttpClient client = new HttpClient(); - GetMethod httpget = new GetMethod(url); + + String host = System.getProperty("https.proxyHost"); + HttpClientBuilder clientBuilder = HttpClientBuilder.create(); + if (host != null) { + Integer port = Integer.parseInt(System.getProperty("https.proxyPort")); + clientBuilder.useSystemProperties(); + String user = System.getProperty("https.proxyUser"); + if (user != null) { + Credentials credentials = new UsernamePasswordCredentials(user, + System.getProperty("https.proxyPassword")); + AuthScope authScope = new AuthScope(host, port); + CredentialsProvider credsProvider = new BasicCredentialsProvider(); + credsProvider.setCredentials(authScope, credentials); + clientBuilder.setDefaultCredentialsProvider(credsProvider); + } + } + + HttpClient client = clientBuilder.build(); + HttpGet httpget = new HttpGet(url); // sets ticket if the user specified one if (ticketParameter != null) { @@ -163,7 +177,7 @@ private ProxyResponse get(String url, String ticketParameter) throws HttpExcepti String userAndPass = user + ":" + pass; String encodedLogin = new String( org.apache.commons.codec.binary.Base64.encodeBase64(userAndPass.getBytes())); - httpget.addRequestHeader(AUTHORIZATION, "Basic " + encodedLogin); + httpget.setHeader(AUTHORIZATION, "Basic " + encodedLogin); } catch (Exception e) { System.out.println("-------------------------------------------"); System.out.println("EXCEPCTION THROWED BY PROXYREDIRECT CLASS"); @@ -174,32 +188,30 @@ private ProxyResponse get(String url, String ticketParameter) throws HttpExcepti } } - client.executeMethod(httpget); + HttpResponse httpResponse = client.execute(httpget); - int statusCode = httpget.getStatusCode(); + int statusCode = httpResponse.getStatusLine().getStatusCode(); response.setStatusCode(statusCode); if (statusCode == HttpStatus.SC_OK) { String encoding = this.getResponseEncoding(httpget); if (encoding == null) { encoding = "UTF-8"; } - InputStream responseStream = httpget.getResponseBodyAsStream(); + InputStream responseStream = httpResponse.getEntity().getContent(); byte[] data = IOUtils.toByteArray(responseStream); response.setData(data); String responseContent = new String(data, encoding); response.setContent(responseContent); } - response.setHeaders(httpget.getResponseHeaders()); + response.setHeaders(httpResponse.getAllHeaders()); return response; } /** * Sends a POST operation request to the URL and gets its response. * - * @param url - * URL of the request - * @param op - * type of mapea operation + * @param url URL of the request + * @param op type of mapea operation * * @return the response of the request */ @@ -211,10 +223,8 @@ private ProxyResponse post(String url) { /** * Checks if the request and the operation are valid. * - * @param url - * URL of the request - * @param op - * type of mapea operation + * @param url URL of the request + * @param op type of mapea operation */ private void checkRequest(String url) { // TODO comprobar @@ -223,12 +233,9 @@ private void checkRequest(String url) { /** * Checks if the response is valid for tthe operation and the URL. * - * @param proxyResponse - * response got from the request - * @param url - * URL of the request - * @param op - * type of mapea operation + * @param proxyResponse response got from the request + * @param url URL of the request + * @param op type of mapea operation */ private void checkResponse(ProxyResponse proxyResponse, String url) { // TODO Auto-generated method stub @@ -237,8 +244,7 @@ private void checkResponse(ProxyResponse proxyResponse, String url) { /** * Checks if the response image is valid . * - * @param proxyResponse - * response got from the request + * @param proxyResponse response got from the request * @throws InvalidResponseException */ private void checkResponseImage(ProxyResponse proxyResponse) throws InvalidResponseException { @@ -276,10 +282,8 @@ private void checkResponseImage(ProxyResponse proxyResponse) throws InvalidRespo /** * Creates a response error using the specified message. * - * @param url - * URL of the request - * @param message - * message of the error + * @param url URL of the request + * @param message message of the error */ private ProxyResponse error(String url, String message) { ProxyResponse proxyResponse = new ProxyResponse(); @@ -291,10 +295,8 @@ private ProxyResponse error(String url, String message) { /** * Creates a response error using the specified exception. * - * @param url - * URL of the request - * @param exception - * Exception object + * @param url URL of the request + * @param exception Exception object */ private ProxyResponse error(String url, Exception exception) { return error(url, exception.getLocalizedMessage()); @@ -303,11 +305,11 @@ private ProxyResponse error(String url, Exception exception) { /** * Gets the encoding of a response */ - private String getResponseEncoding(GetMethod httpget) { + private String getResponseEncoding(HttpGet httpget) { String regexp = ".*charset\\=([^;]+).*"; Boolean isCharset = null; String encoding = null; - Header[] headerResponse = httpget.getResponseHeaders("Content-Type"); + Header[] headerResponse = httpget.getHeaders("Content-Type"); for (Header header : headerResponse) { String contentType = header.getValue(); if (!contentType.isEmpty()) { diff --git a/mapea-rest/src/main/java/es/juntadeandalucia/mapea/bean/ProxyResponse.java b/mapea-rest/src/main/java/es/juntadeandalucia/mapea/bean/ProxyResponse.java index 3d49cf8ed..06965238a 100644 --- a/mapea-rest/src/main/java/es/juntadeandalucia/mapea/bean/ProxyResponse.java +++ b/mapea-rest/src/main/java/es/juntadeandalucia/mapea/bean/ProxyResponse.java @@ -1,6 +1,6 @@ package es.juntadeandalucia.mapea.bean; -import org.apache.commons.httpclient.Header; +import org.apache.http.Header; import org.json.JSONObject; /** diff --git a/mapea-rest/src/main/java/es/juntadeandalucia/mapea/parameter/Parameters.java b/mapea-rest/src/main/java/es/juntadeandalucia/mapea/parameter/Parameters.java index c3d77fea9..be90462c9 100644 --- a/mapea-rest/src/main/java/es/juntadeandalucia/mapea/parameter/Parameters.java +++ b/mapea-rest/src/main/java/es/juntadeandalucia/mapea/parameter/Parameters.java @@ -57,6 +57,12 @@ public void addGetFeatureInfo (String getfeatureinfo) { } } + public void addLayerswitcher (String layerswitcher) { + if (layerswitcher != null) { + parameters.put("layerswitcher", layerswitcher); + } + } + public void addZoom (String zoom) { if (zoom != null) { parameters.put("zoom", zoom); @@ -86,7 +92,7 @@ public void addMaxextent (String maxextent) { parameters.put("maxExtent", maxextent); } } - + public void addTicket (String ticket) { if (ticket != null) { parameters.put("ticket", ticket); @@ -111,7 +117,7 @@ public void addBGColorContainer (String color) { parameters.put("bgColorContainer", color); } } - + public JSONObject toJSON () { return parameters; } @@ -123,4 +129,4 @@ public String getCallbackFn () { public void setCallbackFn (String callbackFn) { this.callbackFn = callbackFn; } -} \ No newline at end of file +} diff --git a/mapea-rest/src/main/java/es/juntadeandalucia/mapea/parameter/parser/ParametersParser.java b/mapea-rest/src/main/java/es/juntadeandalucia/mapea/parameter/parser/ParametersParser.java index f765fe860..fa9f2fe81 100644 --- a/mapea-rest/src/main/java/es/juntadeandalucia/mapea/parameter/parser/ParametersParser.java +++ b/mapea-rest/src/main/java/es/juntadeandalucia/mapea/parameter/parser/ParametersParser.java @@ -11,7 +11,7 @@ import es.juntadeandalucia.mapea.parameter.Parameters; public abstract class ParametersParser { - + public static Parameters parse (MultivaluedMap queryParams) { String container = queryParams.getFirst("container"); if ((container == null) || (container.trim().isEmpty())) { @@ -22,6 +22,7 @@ public static Parameters parse (MultivaluedMap queryParams) { String controls = queryParams.getFirst("controls"); String label = queryParams.getFirst("label"); String getfeatureinfo = queryParams.getFirst("getfeatureinfo"); + String layerswitcher = queryParams.getFirst("layerswitcher"); String zoom = queryParams.getFirst("zoom"); String projection = queryParams.getFirst("projection"); String center = queryParams.getFirst("center"); @@ -30,7 +31,7 @@ public static Parameters parse (MultivaluedMap queryParams) { String callbackFn = queryParams.getFirst("callback"); String ticket = queryParams.getFirst("ticket"); String bgcolorcontainer = queryParams.getFirst("bgcolorcontainer"); - + Parameters parameters = new Parameters(); parameters.addContainer(container); parameters.addWmcfiles(wmcfiles); @@ -38,6 +39,7 @@ public static Parameters parse (MultivaluedMap queryParams) { parameters.addControls(controls); parameters.addLabel(label); parameters.addGetFeatureInfo(getfeatureinfo); + parameters.addLayerswitcher(layerswitcher); parameters.addZoom(zoom); parameters.addProjection(projection); parameters.addCenter(center); @@ -46,10 +48,10 @@ public static Parameters parse (MultivaluedMap queryParams) { parameters.setCallbackFn(callbackFn); parameters.addTicket(ticket); parameters.addBGColorContainer(bgcolorcontainer); - + return parameters; } - + public static List parseControls (String controlsParameter) { List controls = new LinkedList(); if (!StringUtils.isEmpty(controlsParameter)) { diff --git a/mapea-rest/src/main/resources/properties/resourcesPlugins.json b/mapea-rest/src/main/resources/properties/resourcesPlugins.json index 092b91783..8b1acd6ef 100644 --- a/mapea-rest/src/main/resources/properties/resourcesPlugins.json +++ b/mapea-rest/src/main/resources/properties/resourcesPlugins.json @@ -1,903 +1,954 @@ { - "plugins": [ + "plugins":[ { - "name": "attributetable", - "versions": [ + "name":"attributetable", + "versions":[ { - "mapea": "6.2.0", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.1.min.css" + "mapea":"6.3.0", + "js":"${mapea.url}/plugins/attributetable/attributetable-2.1.0.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-2.1.0.min.css" }, { - "mapea": "6.1.0", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.1.min.css" + "mapea":"6.2.0", + "js":"${mapea.url}/plugins/attributetable/attributetable-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-2.0.1.min.css" }, { - "mapea": "6.0.0", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.1.min.css" + "mapea":"6.1.0", + "js":"${mapea.url}/plugins/attributetable/attributetable-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-2.0.1.min.css" }, { - "mapea": "5.2.0", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.0.min.css" + "mapea":"6.0.0", + "js":"${mapea.url}/plugins/attributetable/attributetable-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-2.0.1.min.css" }, { - "mapea": "5.1.0", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.0.min.css" + "mapea":"5.2.0", + "js":"${mapea.url}/plugins/attributetable/attributetable-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-2.0.0.min.css" }, { - "mapea": "5.0.1", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.0.min.css" + "mapea":"5.1.0", + "js":"${mapea.url}/plugins/attributetable/attributetable-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-2.0.0.min.css" }, { - "mapea": "5.0.0", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-2.0.0.min.css" + "mapea":"5.0.1", + "js":"${mapea.url}/plugins/attributetable/attributetable-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-2.0.0.min.css" }, { - "mapea": "4.3.0", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.1.min.css" + "mapea":"5.0.0", + "js":"${mapea.url}/plugins/attributetable/attributetable-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-2.0.0.min.css" }, { - "mapea": "4.2.5", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.1.min.css" + "mapea":"4.3.0", + "js":"${mapea.url}/plugins/attributetable/attributetable-1.0.1.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-1.0.1.min.css" }, { - "mapea": "4.2.4", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.1.min.css" + "mapea":"4.2.5", + "js":"${mapea.url}/plugins/attributetable/attributetable-1.0.1.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-1.0.1.min.css" }, { - "mapea": "4.2.1", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.1.min.css" + "mapea":"4.2.4", + "js":"${mapea.url}/plugins/attributetable/attributetable-1.0.1.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-1.0.1.min.css" }, { - "mapea": "4.2.0", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.1.min.css" + "mapea":"4.2.1", + "js":"${mapea.url}/plugins/attributetable/attributetable-1.0.1.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-1.0.1.min.css" }, { - "mapea": "4.1.0", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.0.min.css" + "mapea":"4.2.0", + "js":"${mapea.url}/plugins/attributetable/attributetable-1.0.1.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-1.0.1.min.css" }, { - "mapea": "4.0.4", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.0.min.css" + "mapea":"4.1.0", + "js":"${mapea.url}/plugins/attributetable/attributetable-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-1.0.0.min.css" }, { - "mapea": "4.0.3", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.0.min.css" + "mapea":"4.0.4", + "js":"${mapea.url}/plugins/attributetable/attributetable-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-1.0.0.min.css" }, { - "mapea": "4.0.2", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.0.min.css" + "mapea":"4.0.3", + "js":"${mapea.url}/plugins/attributetable/attributetable-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-1.0.0.min.css" }, { - "mapea": "4.0.0", - "js": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/attributetable/attributetable-1.0.0.min.css" + "mapea":"4.0.2", + "js":"${mapea.url}/plugins/attributetable/attributetable-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-1.0.0.min.css" + }, + { + "mapea":"4.0.0", + "js":"${mapea.url}/plugins/attributetable/attributetable-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/attributetable/attributetable-1.0.0.min.css" } ] }, { - "name": "printerdos", - "versions": [ + "name":"printerdos", + "versions":[ + { + "mapea":"6.3.0", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.2.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.2.0.min.css" + }, { - "mapea": "6.2.0", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"6.2.0", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "6.1.0", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"6.1.0", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "6.0.0", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"6.0.0", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "5.2.0", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"5.2.0", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "5.1.0", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"5.1.0", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "5.0.1", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"5.0.1", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "5.0.0", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"5.0.0", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "4.3.0", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"4.3.0", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "4.2.5", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"4.2.5", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "4.2.4", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"4.2.4", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "4.2.1", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"4.2.1", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "4.2.0", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"4.2.0", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "4.1.0", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"4.1.0", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "4.0.4", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"4.0.4", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "4.0.3", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"4.0.3", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "4.0.2", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"4.0.2", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" }, { - "mapea": "4.0.0", - "js": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" + "mapea":"4.0.0", + "js":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printerdos/printerdos-4.1.0.min.css" } ] }, { - "name": "geosearch", - "versions": [ + "name":"geosearch", + "versions":[ + { + "mapea":"6.3.0", + "js":"${mapea.url}/plugins/geosearch/geosearch-2.0.3.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-2.0.3.min.css" + }, { - "mapea": "6.2.0", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.2.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.2.min.css" + "mapea":"6.2.0", + "js":"${mapea.url}/plugins/geosearch/geosearch-2.0.2.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-2.0.2.min.css" }, { - "mapea": "6.1.0", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.2.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.2.min.css" + "mapea":"6.1.0", + "js":"${mapea.url}/plugins/geosearch/geosearch-2.0.2.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-2.0.2.min.css" }, { - "mapea": "6.0.0", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.1.min.css" + "mapea":"6.0.0", + "js":"${mapea.url}/plugins/geosearch/geosearch-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-2.0.1.min.css" }, { - "mapea": "5.2.0", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.1.min.css" + "mapea":"5.2.0", + "js":"${mapea.url}/plugins/geosearch/geosearch-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-2.0.1.min.css" }, { - "mapea": "5.1.0", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.1.min.css" + "mapea":"5.1.0", + "js":"${mapea.url}/plugins/geosearch/geosearch-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-2.0.1.min.css" }, { - "mapea": "5.0.1", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.1.min.css" + "mapea":"5.0.1", + "js":"${mapea.url}/plugins/geosearch/geosearch-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-2.0.1.min.css" }, { - "mapea": "5.0.0", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-2.0.1.min.css" + "mapea":"5.0.0", + "js":"${mapea.url}/plugins/geosearch/geosearch-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-2.0.1.min.css" }, { - "mapea": "4.3.0", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" + "mapea":"4.3.0", + "js":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" }, { - "mapea": "4.2.5", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" + "mapea":"4.2.5", + "js":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" }, { - "mapea": "4.2.4", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" + "mapea":"4.2.4", + "js":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" }, { - "mapea": "4.2.1", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" + "mapea":"4.2.1", + "js":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" }, { - "mapea": "4.2.0", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" + "mapea":"4.2.0", + "js":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" }, { - "mapea": "4.1.0", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" + "mapea":"4.1.0", + "js":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" }, { - "mapea": "4.0.4", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" + "mapea":"4.0.4", + "js":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" }, { - "mapea": "4.0.3", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" + "mapea":"4.0.3", + "js":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" }, { - "mapea": "4.0.2", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" + "mapea":"4.0.2", + "js":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-1.1.0.min.css" }, { - "mapea": "4.0.0", - "js": "https:${mapea.url}/plugins/geosearch/geosearch-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearch/geosearch-1.0.0.min.css" + "mapea":"4.0.0", + "js":"${mapea.url}/plugins/geosearch/geosearch-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearch/geosearch-1.0.0.min.css" } ] }, { - "name": "measurebar", - "versions": [ + "name":"measurebar", + "versions":[ { - "mapea": "6.2.0", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-3.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-3.1.0.min.css" + "mapea":"6.3.0", + "js":"${mapea.url}/plugins/measurebar/measurebar-3.1.1.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-3.1.1.min.css" }, { - "mapea": "6.1.0", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-3.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-3.1.0.min.css" + "mapea":"6.2.0", + "js":"${mapea.url}/plugins/measurebar/measurebar-3.1.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-3.1.0.min.css" }, { - "mapea": "6.0.0", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-3.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-3.1.0.min.css" + "mapea":"6.1.0", + "js":"${mapea.url}/plugins/measurebar/measurebar-3.1.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-3.1.0.min.css" }, { - "mapea": "5.2.0", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-3.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-3.0.0.min.css" + "mapea":"6.0.0", + "js":"${mapea.url}/plugins/measurebar/measurebar-3.1.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-3.1.0.min.css" }, { - "mapea": "5.1.0", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-2.0.0.min.css" + "mapea":"5.2.0", + "js":"${mapea.url}/plugins/measurebar/measurebar-3.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-3.0.0.min.css" }, { - "mapea": "5.0.1", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-2.0.0.min.css" + "mapea":"5.1.0", + "js":"${mapea.url}/plugins/measurebar/measurebar-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-2.0.0.min.css" }, { - "mapea": "5.0.0", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-2.0.0.min.css" + "mapea":"5.0.1", + "js":"${mapea.url}/plugins/measurebar/measurebar-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-2.0.0.min.css" }, { - "mapea": "4.3.0", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" + "mapea":"5.0.0", + "js":"${mapea.url}/plugins/measurebar/measurebar-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-2.0.0.min.css" }, { - "mapea": "4.2.5", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" + "mapea":"4.3.0", + "js":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" }, { - "mapea": "4.2.4", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" + "mapea":"4.2.5", + "js":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" }, { - "mapea": "4.2.1", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" + "mapea":"4.2.4", + "js":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" }, { - "mapea": "4.2.0", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" + "mapea":"4.2.1", + "js":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" }, { - "mapea": "4.1.0", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" + "mapea":"4.2.0", + "js":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" }, { - "mapea": "4.0.4", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" + "mapea":"4.1.0", + "js":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" }, { - "mapea": "4.0.3", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" + "mapea":"4.0.4", + "js":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" }, { - "mapea": "4.0.2", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" + "mapea":"4.0.3", + "js":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" }, { - "mapea": "4.0.0", - "js": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" + "mapea":"4.0.2", + "js":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" + }, + { + "mapea":"4.0.0", + "js":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/measurebar/measurebar-1.0.0.min.css" } ] }, { - "name": "printer", - "versions": [ + "name":"printer", + "versions":[ { - "mapea": "6.2.0", - "js": "https:${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-2.0.0.min.css" + "mapea":"6.3.0", + "js":"${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-2.0.0.min.css" }, { - "mapea": "6.1.0", - "js": "https:${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-2.0.0.min.css" + "mapea":"6.2.0", + "js":"${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-2.0.0.min.css" }, { - "mapea": "6.0.0", - "js": "https:${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-2.0.0.min.css" + "mapea":"6.1.0", + "js":"${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-2.0.0.min.css" }, { - "mapea": "5.2.0", - "js": "https:${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-2.0.0.min.css" + "mapea":"6.0.0", + "js":"${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-2.0.0.min.css" }, { - "mapea": "5.1.0", - "js": "https:${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-2.0.0.min.css" + "mapea":"5.2.0", + "js":"${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-2.0.0.min.css" }, { - "mapea": "5.0.1", - "js": "https:${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-2.0.0.min.css" + "mapea":"5.1.0", + "js":"${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-2.0.0.min.css" }, { - "mapea": "5.0.0", - "js": "https:${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-2.0.0.min.css" + "mapea":"5.0.1", + "js":"${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-2.0.0.min.css" }, { - "mapea": "4.3.0", - "js": "https:${mapea.url}/plugins/printer/printer-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-1.1.0.min.css" + "mapea":"5.0.0", + "js":"${mapea.url}/plugins/printer/printer-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-2.0.0.min.css" }, { - "mapea": "4.2.5", - "js": "https:${mapea.url}/plugins/printer/printer-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-1.1.0.min.css" + "mapea":"4.3.0", + "js":"${mapea.url}/plugins/printer/printer-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-1.1.0.min.css" }, { - "mapea": "4.2.4", - "js": "https:${mapea.url}/plugins/printer/printer-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-1.1.0.min.css" + "mapea":"4.2.5", + "js":"${mapea.url}/plugins/printer/printer-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-1.1.0.min.css" }, { - "mapea": "4.2.1", - "js": "https:${mapea.url}/plugins/printer/printer-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-1.1.0.min.css" + "mapea":"4.2.4", + "js":"${mapea.url}/plugins/printer/printer-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-1.1.0.min.css" }, { - "mapea": "4.2.0", - "js": "https:${mapea.url}/plugins/printer/printer-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-1.1.0.min.css" + "mapea":"4.2.1", + "js":"${mapea.url}/plugins/printer/printer-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-1.1.0.min.css" }, { - "mapea": "4.1.0", - "js": "https:${mapea.url}/plugins/printer/printer-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-1.0.0.min.css" + "mapea":"4.2.0", + "js":"${mapea.url}/plugins/printer/printer-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-1.1.0.min.css" }, { - "mapea": "4.0.4", - "js": "https:${mapea.url}/plugins/printer/printer-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-1.0.0.min.css" + "mapea":"4.1.0", + "js":"${mapea.url}/plugins/printer/printer-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-1.0.0.min.css" }, { - "mapea": "4.0.3", - "js": "https:${mapea.url}/plugins/printer/printer-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-1.0.0.min.css" + "mapea":"4.0.4", + "js":"${mapea.url}/plugins/printer/printer-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-1.0.0.min.css" }, { - "mapea": "4.0.2", - "js": "https:${mapea.url}/plugins/printer/printer-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-1.0.0.min.css" + "mapea":"4.0.3", + "js":"${mapea.url}/plugins/printer/printer-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-1.0.0.min.css" }, { - "mapea": "4.0.0", - "js": "https:${mapea.url}/plugins/printer/printer-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/printer/printer-1.0.0.min.css" + "mapea":"4.0.2", + "js":"${mapea.url}/plugins/printer/printer-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-1.0.0.min.css" + }, + { + "mapea":"4.0.0", + "js":"${mapea.url}/plugins/printer/printer-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/printer/printer-1.0.0.min.css" } ] }, { - "name": "geosearchbylocation", - "versions": [ + "name":"geosearchbylocation", + "versions":[ + { + "mapea":"6.3.0", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.1.min.css" + }, { - "mapea": "6.2.0", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" + "mapea":"6.2.0", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" }, { - "mapea": "6.1.0", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" + "mapea":"6.1.0", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" }, { - "mapea": "6.0.0", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" + "mapea":"6.0.0", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" }, { - "mapea": "5.2.0", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" + "mapea":"5.2.0", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" }, { - "mapea": "5.1.0", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" + "mapea":"5.1.0", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" }, { - "mapea": "5.0.1", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" + "mapea":"5.0.1", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" }, { - "mapea": "5.0.0", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" + "mapea":"5.0.0", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-2.0.0.min.css" }, { - "mapea": "4.3.0", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" + "mapea":"4.3.0", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" }, { - "mapea": "4.2.5", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" + "mapea":"4.2.5", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" }, { - "mapea": "4.2.4", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" + "mapea":"4.2.4", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" }, { - "mapea": "4.2.1", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" + "mapea":"4.2.1", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" }, { - "mapea": "4.2.0", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" + "mapea":"4.2.0", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" }, { - "mapea": "4.1.0", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" + "mapea":"4.1.0", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" }, { - "mapea": "4.0.4", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" + "mapea":"4.0.4", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" }, { - "mapea": "4.0.3", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" + "mapea":"4.0.3", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" }, { - "mapea": "4.0.2", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" + "mapea":"4.0.2", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.1.0.min.css" }, { - "mapea": "4.0.0", - "js": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.0.0.min.css" + "mapea":"4.0.0", + "js":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbylocation/geosearchbylocation-1.0.0.min.css" } ] }, { - "name": "geosearchbycoordinates", - "versions": [ + "name":"geosearchbycoordinates", + "versions":[ + { + "mapea":"6.3.0", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.2.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.2.min.css" + }, { - "mapea": "6.2.0", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.1.min.css" + "mapea":"6.2.0", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.1.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.1.min.css" }, { - "mapea": "6.1.0", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.1.min.css" + "mapea":"6.1.0", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.1.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.1.min.css" }, { - "mapea": "6.0.0", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"6.0.0", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "5.2.0", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"5.2.0", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "5.1.0", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"5.1.0", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "5.0.1", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"5.0.1", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "5.0.0", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"5.0.0", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "4.3.0", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"4.3.0", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "4.2.5", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"4.2.5", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "4.2.4", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"4.2.4", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "4.2.1", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"4.2.1", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "4.2.0", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"4.2.0", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "4.1.0", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"4.1.0", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "4.0.4", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"4.0.4", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "4.0.3", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"4.0.3", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "4.0.2", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"4.0.2", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" }, { - "mapea": "4.0.0", - "js": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" + "mapea":"4.0.0", + "js":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/geosearchbycoordinates/geosearchbycoordinates-1.0.0.min.css" } ] }, { - "name": "searchstreetgeosearch", - "versions": [ + "name":"searchstreetgeosearch", + "versions":[ { - "mapea": "6.2.0", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" + "mapea":"6.3.0", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.1.0.min.css" }, { - "mapea": "6.1.0", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" + "mapea":"6.2.0", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" }, { - "mapea": "6.0.0", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" + "mapea":"6.1.0", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" }, { - "mapea": "5.2.0", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" + "mapea":"6.0.0", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" }, { - "mapea": "5.1.0", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" + "mapea":"5.2.0", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" }, { - "mapea": "5.0.1", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" + "mapea":"5.1.0", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" }, { - "mapea": "5.0.0", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" + "mapea":"5.0.1", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" }, { - "mapea": "4.3.0", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" + "mapea":"5.0.0", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-2.0.2.min.css" }, { - "mapea": "4.2.5", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" + "mapea":"4.3.0", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" }, { - "mapea": "4.2.4", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" + "mapea":"4.2.5", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" }, { - "mapea": "4.2.1", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" + "mapea":"4.2.4", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" }, { - "mapea": "4.2.0", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" + "mapea":"4.2.1", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" }, { - "mapea": "4.1.0", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" + "mapea":"4.2.0", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" }, { - "mapea": "4.0.4", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" + "mapea":"4.1.0", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" }, { - "mapea": "4.0.3", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" + "mapea":"4.0.4", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" }, { - "mapea": "4.0.2", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" + "mapea":"4.0.3", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" }, { - "mapea": "4.0.0", - "js": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.0.0.min.css" + "mapea":"4.0.2", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.1.0.min.css" + }, + { + "mapea":"4.0.0", + "js":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreetgeosearch/searchstreetgeosearch-1.0.0.min.css" } ] }, { - "name": "searchstreet", - "versions": [ + "name":"searchstreet", + "versions":[ { - "mapea": "6.2.0", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" + "mapea":"6.3.0", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" }, { - "mapea": "6.1.0", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" + "mapea":"6.2.0", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" }, { - "mapea": "6.0.0", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" + "mapea":"6.1.0", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" }, { - "mapea": "5.2.0", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" + "mapea":"6.0.0", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" }, { - "mapea": "5.1.0", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" + "mapea":"5.2.0", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" }, { - "mapea": "5.0.1", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" + "mapea":"5.1.0", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" }, { - "mapea": "5.0.0", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" + "mapea":"5.0.1", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" }, { - "mapea": "4.3.0", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" + "mapea":"5.0.0", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-2.0.1.min.css" }, { - "mapea": "4.2.5", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" + "mapea":"4.3.0", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" }, { - "mapea": "4.2.4", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" + "mapea":"4.2.5", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" }, { - "mapea": "4.2.1", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" + "mapea":"4.2.4", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" }, { - "mapea": "4.2.0", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" + "mapea":"4.2.1", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" }, { - "mapea": "4.1.0", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" + "mapea":"4.2.0", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" }, { - "mapea": "4.0.4", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" + "mapea":"4.1.0", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" }, { - "mapea": "4.0.3", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" + "mapea":"4.0.4", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" }, { - "mapea": "4.0.2", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" + "mapea":"4.0.3", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" }, { - "mapea": "4.0.0", - "js": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/searchstreet/searchstreet-1.0.0.min.css" + "mapea":"4.0.2", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-1.1.0.min.css" + }, + { + "mapea":"4.0.0", + "js":"${mapea.url}/plugins/searchstreet/searchstreet-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/searchstreet/searchstreet-1.0.0.min.css" } ] }, { - "name": "wfstcontrols", - "versions": [ + "name":"wfstcontrols", + "versions":[ + { + "mapea":"6.3.0", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.3.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.3.min.css" + }, + { + "mapea":"6.2.0", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.2.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.2.min.css" + }, { - "mapea": "6.2.0", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.2.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.2.min.css" - }, { - "mapea": "6.1.0", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.2.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.2.min.css" + "mapea":"6.1.0", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.2.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.2.min.css" }, { - "mapea": "6.0.0", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.1.min.css" + "mapea":"6.0.0", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.1.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.1.min.css" }, { - "mapea": "5.2.0", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.1.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.1.min.css" + "mapea":"5.2.0", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.1.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-3.0.1.min.css" }, { - "mapea": "5.1.0", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.min.css" + "mapea":"5.1.0", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.min.css" }, { - "mapea": "5.0.1", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.min.css" + "mapea":"5.0.1", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.min.css" }, { - "mapea": "5.0.0", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.min.css" + "mapea":"5.0.0", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-2.0.0.min.css" }, { - "mapea": "4.3.0", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.min.css" + "mapea":"4.3.0", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.min.css" }, { - "mapea": "4.2.5", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.min.css" + "mapea":"4.2.5", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.min.css" }, { - "mapea": "4.2.4", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.min.css" + "mapea":"4.2.4", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.min.css" }, { - "mapea": "4.2.1", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.min.css" + "mapea":"4.2.1", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.min.css" }, { - "mapea": "4.2.0", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.min.css" + "mapea":"4.2.0", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.2.0.min.css" }, { - "mapea": "4.1.0", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.1.1.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.1.1.min.css" + "mapea":"4.1.0", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.1.1.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.1.1.min.css" }, { - "mapea": "4.0.4", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.min.css" + "mapea":"4.0.4", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.min.css" }, { - "mapea": "4.0.3", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.min.css" + "mapea":"4.0.3", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.min.css" }, { - "mapea": "4.0.2", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.min.css" + "mapea":"4.0.2", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.min.css" }, { - "mapea": "4.0.0", - "js": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.ol.min.js", - "css": "https:${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.min.css" + "mapea":"4.0.0", + "js":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.ol.min.js", + "css":"${mapea.url}/plugins/wfstcontrols/wfstcontrols-1.0.0.min.css" } ] } ] -} \ No newline at end of file +} diff --git a/mapea-rest/src/main/webapp/files/kml/arbda_sing_se.kml b/mapea-rest/src/main/webapp/files/kml/arbda_sing_se.kml index 92260deef..a299a28fc 100755 --- a/mapea-rest/src/main/webapp/files/kml/arbda_sing_se.kml +++ b/mapea-rest/src/main/webapp/files/kml/arbda_sing_se.kml @@ -1,35 +1,34 @@ - + - - - 1 - - Nombre + + + 1 + + Nombre + + http://www.juntadeandalucia.es/medioambiente/BIO/DOC/ARB_SING/gfx/logojunta.gif + + + + + + + + + #arbol + Agracejal de la Cuerda de Vallehondo + 0 + + @@ -51,21 +50,19 @@ - ]]> - - + ]]> + -5.58288384444444,37.8449611,14000 - - - - - #arbol - Alcornocal de la Indiana - 0 - - - + + + + + #arbol + Alcornocal de la Indiana + 0 + + @@ -87,21 +84,19 @@ - ]]> - - + ]]> + -5.85889086666667,37.1916069583333,14000 - - - - - #arbol - Alcornocal de la Mocheta - 0 - - - + + + + + #arbol + Alcornocal de la Mocheta + 0 + + @@ -128,21 +123,19 @@ - ]]> - - + ]]> + -5.48207405555556,37.2678068222222,14000 - - - - - #arbol - Alcornoques de la Finca El Alcornocal - 0 - - - + + + + + #arbol + Alcornoques de la Finca El Alcornocal + 0 + + @@ -169,21 +162,19 @@ - ]]> - - + ]]> + -5.77237164166667,37.9537608166667,14000 - - - - - #arbol - Almezar de La Cartuja - 0 - - - + + + + + #arbol + Almezar de La Cartuja + 0 + + @@ -210,21 +201,19 @@ - ]]> - - + ]]> + -5.72789629444444,37.9538222944445,14000 - - - - - #arbol - Ciruelos Silvestres de la Hoya de Santa María - 0 - - - + + + + + #arbol + Ciruelos Silvestres de la Hoya de Santa María + 0 + + @@ -251,21 +240,19 @@ - ]]> - - + ]]> + -5.85838345833333,37.9930792277778,14000 - - - - - #arbol - Encinar de Coronado - 0 - - - + + + + + #arbol + Encinar de Coronado + 0 + + @@ -292,21 +279,19 @@ - ]]> - - + ]]> + -5.81015456666667,37.9802310694444,14000 - - - - - #arbol - Eucaliptos de la Casa de El Colmenar - 0 - - - + + + + + #arbol + Eucaliptos de la Casa de El Colmenar + 0 + + @@ -333,21 +318,19 @@ - ]]> - - + ]]> + -6.194889375,37.2616089861111,14000 - - - - - #arbol - Lentiscos de La Motilla - 0 - - - + + + + + #arbol + Lentiscos de La Motilla + 0 + + @@ -374,21 +357,19 @@ - ]]> - - + ]]> + -5.26002325,37.581755975,14000 - - - - - #arbol - Madroños de la Finca la Algaidilla - 0 - - - + + + + + #arbol + Madroños de la Finca la Algaidilla + 0 + + @@ -415,21 +396,19 @@ - ]]> - - + ]]> + -4.79915325833333,37.2511880027778,14000 - - - - - #arbol - Melojar de Cerro Negrillo - 0 - - - + + + + + #arbol + Melojar de Cerro Negrillo + 0 + + @@ -456,21 +435,19 @@ - ]]> - - + ]]> + -5.58335940833333,37.9180365972222,14000 - - - - - #arbol - Melojar de la Cañada del del Robledo - 0 - - - + + + + + #arbol + Melojar de la Cañada del del Robledo + 0 + + @@ -497,21 +474,19 @@ - ]]> - - + ]]> + -5.59183774722222,37.9617881972222,14000 - - - - - #arbol - Melojar de los Navazos - 0 - - - + + + + + #arbol + Melojar de los Navazos + 0 + + @@ -533,21 +508,19 @@ - ]]> - - + ]]> + -5.59758210277778,37.9581744916667,14000 - - - - - #arbol - Pinar de Los Planos - 0 - - - + + + + + #arbol + Pinar de Los Planos + 0 + + @@ -574,21 +547,19 @@ - ]]> - - + ]]> + -6.18468338611111,37.25382425,14000 - - - - - #arbol - Quejigar de La Abejera - 0 - - - + + + + + #arbol + Quejigar de La Abejera + 0 + + @@ -615,21 +586,19 @@ - ]]> - - + ]]> + -5.59693125555556,37.9580484833333,14000 - - - - - #arbol - Ribera del Arroyo de La Brava - 0 - - - + + + + + #arbol + Ribera del Arroyo de La Brava + 0 + + @@ -656,12 +625,11 @@ - ]]> - - + ]]> + -5.72800698888889,37.9472941027778,14000 - - - - + + + + \ No newline at end of file diff --git a/mapea-rest/src/main/webapp/files/wmc/context_cdau_hibrido_versions.xml b/mapea-rest/src/main/webapp/files/wmc/context_cdau_hibrido_versions.xml new file mode 100644 index 000000000..ab70b4dcb --- /dev/null +++ b/mapea-rest/src/main/webapp/files/wmc/context_cdau_hibrido_versions.xml @@ -0,0 +1,1301 @@ + + + + + + Callejero Digital de Andalucía Unificado + + + + + IECA + + Callejero Digital de Andalucía Unificado + + + + Fichero de configuración del contexto de visualización de capas. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mapea-rest/src/main/webapp/index.jsp b/mapea-rest/src/main/webapp/index.jsp index 7e0668fc7..e9e6a7bc1 100644 --- a/mapea-rest/src/main/webapp/index.jsp +++ b/mapea-rest/src/main/webapp/index.jsp @@ -12,7 +12,7 @@ MAPEA - +