UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

622 lines (613 loc) 73 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.rasterVisConfigs = exports.ZOOM_RANGES = exports.RASTER_COLOR_RESET_PARAMS = exports.PRESET_OPTIONS = exports.MAX_PIXEL_VALUES = exports.DEFAULT_BAND_MAPPINGS = exports.DATA_SOURCE_IDS = exports.DATA_SOURCE_COLOR_DEFAULTS = exports.COLORMAP_OPTIONS = exports.CATEGORICAL_COLORMAP_ID = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _rasterTileLayerSchema = require("./raster-tile-layer-schema"); var _types = require("./types"); // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project /** * Known Data Source IDs that work with current STAC Layer limitations */ var DATA_SOURCE_IDS = exports.DATA_SOURCE_IDS = /*#__PURE__*/function (DATA_SOURCE_IDS) { DATA_SOURCE_IDS["SENTINEL_2_L1C"] = "sentinel-2-l1c"; DATA_SOURCE_IDS["SENTINEL_2_L1A"] = "sentinel-2-l2a"; DATA_SOURCE_IDS["SENTINEL_2_C1_L2A"] = "sentinel-2-c1-l2a"; DATA_SOURCE_IDS["SENTINEL_2_PRE_C1_L2A"] = "sentinel-2-pre-c1-l2a"; DATA_SOURCE_IDS["LANDSAT_C2_L1"] = "landsat-c2-l1"; DATA_SOURCE_IDS["LANDSAT_C2_L2"] = "landsat-c2-l2"; DATA_SOURCE_IDS["MODIS_09A1_061"] = "modis-09A1-061"; DATA_SOURCE_IDS["MODIS_43A4_061"] = "modis-43A4-061"; DATA_SOURCE_IDS["MOIDS_09Q1_061"] = "modis-09Q1-061"; return DATA_SOURCE_IDS; }({}); var RASTER_COLOR_RESET_PARAMS = exports.RASTER_COLOR_RESET_PARAMS = { gammaContrastFactor: 1, sigmoidalContrastFactor: 0, sigmoidalBiasFactor: 0.5, saturationValue: 1.0, dynamicColor: false }; var DEFAULT_SENTINEL_COLOR_DEFAULTS = { gammaContrastFactor: 2.2, sigmoidalContrastFactor: 23, sigmoidalBiasFactor: 0.12, saturationValue: 2.0 }; var DEFAULT_MODIS_COLOR_DEFAULTS = { gammaContrastFactor: 2.0, sigmoidalContrastFactor: 8, sigmoidalBiasFactor: 0.13, saturationValue: 1.1 }; var DEFAULT_SENTINEL_BAND_MAPPING = { coastal: 'B01', blue: 'B02', green: 'B03', red: 'B04', rededge1: 'B05', rededge2: 'B06', rededge3: 'B07', nir: 'B08', nir08: 'B8A', nir09: 'B09', cirrus: 'B10', swir11: 'B11', swir16: 'B11', swir12: 'B12', swir22: 'B12' }; var DEFAULT_MODIS_BAND_MAPPING = { sur_refl_b01: 'B01', sur_refl_b02: 'B02', sur_refl_b03: 'B03', sur_refl_b04: 'B04', sur_refl_b05: 'B05', sur_refl_b06: 'B06', sur_refl_b07: 'B07', Nadir_Reflectance_Band1: 'B01', Nadir_Reflectance_Band2: 'B02', Nadir_Reflectance_Band3: 'B03', Nadir_Reflectance_Band4: 'B04', Nadir_Reflectance_Band5: 'B05', Nadir_Reflectance_Band6: 'B06', Nadir_Reflectance_Band7: 'B07' }; var DEFAULT_LANDSAT_C2_L1_BAND_MAPPING = { green: 'B01', red: 'B02', nir08: 'B03', nir09: 'B04' }; var DEFAULT_LANDSAT_C2_L2_BAND_MAPPING = { blue: 'B01', green: 'B02', red: 'B03', nir08: 'B04', swir16: 'B05', lwir: 'B06', swir22: 'B07', coastal: 'B01', lwir11: 'B06' }; var DEFAULT_BAND_MAPPINGS = exports.DEFAULT_BAND_MAPPINGS = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, DATA_SOURCE_IDS.SENTINEL_2_L1C, DEFAULT_SENTINEL_BAND_MAPPING), DATA_SOURCE_IDS.SENTINEL_2_L1A, DEFAULT_SENTINEL_BAND_MAPPING), DATA_SOURCE_IDS.SENTINEL_2_C1_L2A, DEFAULT_SENTINEL_BAND_MAPPING), DATA_SOURCE_IDS.SENTINEL_2_PRE_C1_L2A, DEFAULT_SENTINEL_BAND_MAPPING), DATA_SOURCE_IDS.LANDSAT_C2_L1, DEFAULT_LANDSAT_C2_L1_BAND_MAPPING), DATA_SOURCE_IDS.LANDSAT_C2_L2, DEFAULT_LANDSAT_C2_L2_BAND_MAPPING), DATA_SOURCE_IDS.MODIS_09A1_061, DEFAULT_MODIS_BAND_MAPPING), DATA_SOURCE_IDS.MODIS_43A4_061, DEFAULT_MODIS_BAND_MAPPING), DATA_SOURCE_IDS.MOIDS_09Q1_061, DEFAULT_MODIS_BAND_MAPPING); /** * Per-data source color rescaling defaults for known collections */ var DATA_SOURCE_COLOR_DEFAULTS = exports.DATA_SOURCE_COLOR_DEFAULTS = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, DATA_SOURCE_IDS.SENTINEL_2_L1C, DEFAULT_SENTINEL_COLOR_DEFAULTS), DATA_SOURCE_IDS.SENTINEL_2_L1A, DEFAULT_SENTINEL_COLOR_DEFAULTS), DATA_SOURCE_IDS.SENTINEL_2_C1_L2A, DEFAULT_SENTINEL_COLOR_DEFAULTS), DATA_SOURCE_IDS.SENTINEL_2_PRE_C1_L2A, DEFAULT_SENTINEL_COLOR_DEFAULTS), DATA_SOURCE_IDS.LANDSAT_C2_L1, DEFAULT_SENTINEL_COLOR_DEFAULTS), DATA_SOURCE_IDS.LANDSAT_C2_L2, DEFAULT_SENTINEL_COLOR_DEFAULTS), DATA_SOURCE_IDS.MODIS_09A1_061, DEFAULT_MODIS_COLOR_DEFAULTS), DATA_SOURCE_IDS.MODIS_43A4_061, DEFAULT_MODIS_COLOR_DEFAULTS), DATA_SOURCE_IDS.MOIDS_09Q1_061, DEFAULT_MODIS_COLOR_DEFAULTS); /** * Available "presets" * * I define a "preset" as one specific manner of loading bands and combining them on the frontend. * In the future I expect we'll want a UI that gives the user full flexibility. */ var PRESET_OPTIONS = exports.PRESET_OPTIONS = { trueColor: { label: 'True Color', id: _rasterTileLayerSchema.RasterTileLayerPresets.trueColor, bandCombination: _types.BandCombination.Rgb, commonNames: ['red', 'green', 'blue'] }, infrared: { label: 'Infrared', id: _rasterTileLayerSchema.RasterTileLayerPresets.infrared, bandCombination: _types.BandCombination.Rgb, commonNames: ['nir', 'red', 'green'], description: 'False-color infrared composite. Near-infrared, red, green mapped to RGB' }, agriculture: { label: 'Agriculture', id: _rasterTileLayerSchema.RasterTileLayerPresets.agriculture, bandCombination: _types.BandCombination.Rgb, commonNames: ['swir16', 'nir', 'blue'], description: 'False-color agriculture composite. Short-wave infrared 1, near-infrared, blue mapped to RGB.' }, forestBurn: { label: 'Forest Burn', id: _rasterTileLayerSchema.RasterTileLayerPresets.forestBurn, bandCombination: _types.BandCombination.Rgb, commonNames: ['swir22', 'nir', 'blue'], description: 'False-color forest burn composite. Short-wave infrared 2, near-infrared, blue mapped to RGB' }, ndvi: { label: 'NDVI', id: _rasterTileLayerSchema.RasterTileLayerPresets.ndvi, bandCombination: _types.BandCombination.NormalizedDifference, commonNames: ['nir', 'red'], description: 'Normalized Difference Vegetation Index', infoUrl: 'https://www.usgs.gov/core-science-systems/nli/landsat/landsat-normalized-difference-vegetation-index' }, // Comment this out for now, because in testing it looks like there's an overflow of some sort; // index values should be between -1 and 1, but values look way out of bounds // evi: { // label: 'EVI', // id: RasterTileLayerPresets.evi, // bandCombination: 'enhancedVegetationIndex', // commonNames: ['nir', 'red', 'blue'] // }, savi: { label: 'SAVI', id: _rasterTileLayerSchema.RasterTileLayerPresets.savi, bandCombination: _types.BandCombination.SoilAdjustedVegetationIndex, commonNames: ['nir', 'red'], description: 'Soil Adjusted Vegetation Index', infoUrl: 'https://www.usgs.gov/core-science-systems/nli/landsat/landsat-soil-adjusted-vegetation-index' }, msavi: { label: 'MSAVI', id: _rasterTileLayerSchema.RasterTileLayerPresets.msavi, bandCombination: _types.BandCombination.ModifiedSoilAdjustedVegetationIndex, commonNames: ['nir', 'red'], description: 'Modified Soil Adjusted Vegetation Index', infoUrl: 'https://www.usgs.gov/core-science-systems/nli/landsat/landsat-modified-soil-adjusted-vegetation-index' }, ndmi: { label: 'NDMI', id: _rasterTileLayerSchema.RasterTileLayerPresets.ndmi, bandCombination: _types.BandCombination.NormalizedDifference, commonNames: ['nir', 'swir16'], description: 'Normalized Difference Moisture Index', infoUrl: 'https://www.usgs.gov/core-science-systems/nli/landsat/normalized-difference-moisture-index' }, nbr: { label: 'NBR', id: _rasterTileLayerSchema.RasterTileLayerPresets.nbr, bandCombination: _types.BandCombination.NormalizedDifference, commonNames: ['nir', 'swir22'], description: 'Normalized Burn Ratio', infoUrl: 'https://www.usgs.gov/core-science-systems/nli/landsat/landsat-normalized-burn-ratio' }, nbr2: { label: 'NBR 2', id: _rasterTileLayerSchema.RasterTileLayerPresets.nbr2, bandCombination: _types.BandCombination.NormalizedDifference, commonNames: ['swir16', 'swir22'], description: 'Normalized Burn Ratio 2', infoUrl: 'https://www.usgs.gov/core-science-systems/nli/landsat/landsat-normalized-burn-ratio-2' }, singleBand: { label: 'Single Band', id: _rasterTileLayerSchema.RasterTileLayerPresets.singleBand, bandCombination: _types.BandCombination.Single, description: 'Render a single band data' } }; /** * Valid zoom ranges for each data source * * The maximum zoom is derived from the resolution of each data source. * The minimum zoom relates to the number of overviews in the COGs at the source. The more * overviews, the easier it is to create downsampled tiles. The minimum zooms can be reduced but it * takes longer to serve low-zoom tiles since the server must read from many image sources. */ // TODO: use render:max_overview_gsd from STAC var ZOOM_RANGES = exports.ZOOM_RANGES = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, DATA_SOURCE_IDS.SENTINEL_2_C1_L2A, [8, 13]), DATA_SOURCE_IDS.SENTINEL_2_L1A, [8, 13]), DATA_SOURCE_IDS.SENTINEL_2_L1C, [8, 13]), DATA_SOURCE_IDS.SENTINEL_2_PRE_C1_L2A, [8, 13]), DATA_SOURCE_IDS.LANDSAT_C2_L1, [7, 12]), DATA_SOURCE_IDS.LANDSAT_C2_L2, [7, 12]), DATA_SOURCE_IDS.MODIS_09A1_061, [7, 13]), DATA_SOURCE_IDS.MODIS_43A4_061, [7, 13]), DATA_SOURCE_IDS.MOIDS_09Q1_061, [7, 13]); /** * Bit depth for each data source * Sentinel-2 is 12-bit; Landsat-8 is 16-bit; Planet is 12-bit; NAIP is 8-bit */ // TODO: use range value and dtype in STAC collection instead of this var MAX_PIXEL_VALUES = exports.MAX_PIXEL_VALUES = (0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])((0, _defineProperty2["default"])({}, DATA_SOURCE_IDS.SENTINEL_2_C1_L2A, Math.pow(2, 12) - 1), DATA_SOURCE_IDS.SENTINEL_2_L1A, Math.pow(2, 12) - 1), DATA_SOURCE_IDS.SENTINEL_2_L1C, Math.pow(2, 12) - 1), DATA_SOURCE_IDS.SENTINEL_2_PRE_C1_L2A, Math.pow(2, 12) - 1), DATA_SOURCE_IDS.LANDSAT_C2_L1, Math.pow(2, 16) - 1), DATA_SOURCE_IDS.LANDSAT_C2_L2, Math.pow(2, 16) - 1), DATA_SOURCE_IDS.MODIS_09A1_061, Math.pow(2, 12) - 1), DATA_SOURCE_IDS.MODIS_43A4_061, Math.pow(2, 12) - 1), DATA_SOURCE_IDS.MOIDS_09Q1_061, Math.pow(2, 12) - 1); /** * Id for categorical colormap. Unlike most colormaps. Categorical colormap image is created * from colormap set in visConfig */ var CATEGORICAL_COLORMAP_ID = exports.CATEGORICAL_COLORMAP_ID = '_categorical'; /** * A list of available colormaps. Colormaps are originally derived from * matplotlib, then via rio-tiler. Colormaps are 10x256 PNG images that are * loaded as textures */ var COLORMAP_OPTIONS = exports.COLORMAP_OPTIONS = [{ label: 'Cfastie', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.cfastie }, { label: 'Rplumbo', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.rplumbo }, { label: 'Schwarzwald', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.schwarzwald }, { label: 'Viridis', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.viridis }, { label: 'Plasma', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.plasma }, { label: 'Inferno', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.inferno }, { label: 'Magma', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.magma }, { label: 'Cividis', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.cividis }, { label: 'Greys', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.greys }, { label: 'Purples', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.purples }, { label: 'Blues', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.blues }, { label: 'Greens', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.greens }, { label: 'Oranges', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.oranges }, { label: 'Reds', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.reds }, { label: 'Yl-Or-Br', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.ylorbr }, { label: 'Yl-Or-Rd', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.ylorrd }, { label: 'Or-Rd', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.orrd }, { label: 'Pu-Rd', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.purd }, { label: 'Rd-Pu', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.rdpu }, { label: 'Bu-Pu', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.bupu }, { label: 'Gn-Bu', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.gnbu }, { label: 'Pu-Bu', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.pubu }, { label: 'Yl-Gn-Bu', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.ylgnbu }, { label: 'Pu-Bu-Gn', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.pubugn }, { label: 'Blue-Gn', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.bugn }, { label: 'Yl-Gn', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.ylgn }, { label: 'W-n-B', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.binary }, { label: 'B-n-W', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.gray }, { label: 'Bone', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.bone }, { label: 'Pink', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.pink }, { label: 'Spring', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.spring }, { label: 'Summer', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.summer }, { label: 'Autumn', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.autumn }, { label: 'Winter', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.winter }, { label: 'Cool', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.cool }, { label: 'Wistia', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.wistia }, { label: 'Hot', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.hot }, { label: 'Afmhot', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.afmhot }, { label: 'Heat', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.gist_heat }, { label: 'Copper', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.copper }, { label: 'Pi-Green', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.piyg }, { label: 'Pr-Gn', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.prgn }, { label: 'Br-Bg', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.brbg }, { label: 'Pu-Or', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.puor }, { label: 'Rd-Gy', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.rdgy }, { label: 'Rd-Bu', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.rdbu }, { label: 'Rd-Yl-Bu', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.rdylbu }, { label: 'Rd-Yl-Gn', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.rdylgn }, { label: 'Spectral', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.spectral }, { label: 'Cool-Warm', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.coolwarm }, { label: 'B-W-R', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.bwr }, { label: 'Seismic', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.seismic }, { label: 'Twilight', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.twilight }, { label: 'Twilight Shifted', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.twilight_shifted }, { label: 'HSV', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.hsv }, { label: 'Flag', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.flag }, { label: 'Prism', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.prism }, { label: 'Ocean', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.ocean }, { label: 'Gist Earth', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.gist_earth }, { label: 'Terrain', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.terrain }, { label: 'Gist Stern', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.gist_stern }, { label: 'Gnuplot', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.gnuplot }, { label: 'Gnuplot2', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.gnuplot2 }, { label: 'Cmrmap', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.cmrmap }, { label: 'Cubehelix', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.cubehelix }, { label: 'Brg', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.brg }, { label: 'Gist Rainbow', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.gist_rainbow }, { label: 'Rainbow', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.rainbow }, { label: 'Jet', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.jet }, { label: 'Nipy Spectral', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.nipy_spectral }, { label: 'Gist NCAR', id: _rasterTileLayerSchema.RasterTileLayerColorMaps.gist_ncar }]; var STAC_SEARCH_PROVIDERS = [ // { // label: 'Microsoft Planetary Computer', // id: 'microsoft' // }, { label: 'Element 84 Earth Search (AWS)', id: 'earth-search' }]; /** * Configuration settings to be exposed through the UI */ var rasterVisConfigs = exports.rasterVisConfigs = { preset: { type: 'object-select', defaultValue: 'trueColor', label: 'Preset', options: Object.values(PRESET_OPTIONS), property: 'preset', group: '' }, useSTACSearching: { type: 'boolean', property: 'useSTACSearching', defaultValue: false, label: 'Use STAC Searching' }, stacSearchProvider: { type: 'object-select', defaultValue: 'earth-search', label: 'STAC Search Provider', options: STAC_SEARCH_PROVIDERS, property: 'stacSearchProvider' }, startDate: { type: 'input', defaultValue: '2020-02-02', label: 'Start Date', property: 'startDate' }, endDate: { type: 'input', defaultValue: '2020-03-02', label: 'End Date', property: 'endDate' }, dynamicColor: { type: 'boolean', defaultValue: false, label: 'Dynamic Color', group: '', property: 'dynamicColor', description: 'Use a dynamic color scale based on data visible in the viewport' }, colormapId: { type: 'object-select', defaultValue: 'cfastie', label: 'Colormap', options: COLORMAP_OPTIONS, property: 'colormapId', group: '' }, // kepler's visConfig from kepler.gl https://github.com/foursquare/kepler.gl/blob/490a8938ffa1fac025e8d1997481acc1bffe4abd/src/layers/layer-factory.js#L228 // key `colorRange` is required becuase it is hardcoded in kepler.gl // to make shallow copy of the visConfig item // https://github.com/foursquare/kepler.gl/blob/490a8938ffa1fac025e8d1997481acc1bffe4abd/src/reducers/vis-state-merger.js#L736 colorRange: 'colorRange', linearRescalingFactor: { defaultValue: [0, 1], // group: "color" isRanged: true, label: 'Linear Rescaling Factor', property: 'linearRescalingFactor', range: [0, 1], step: 0.01, type: 'number' }, // Non-linear rescaling for true-color images // If false, implies linear rescaling nonLinearRescaling: { type: 'boolean', property: 'nonLinearRescaling', defaultValue: true, // group: undefined label: 'Non-Linear Rescaling' }, gammaContrastFactor: { defaultValue: 1, // group: "color" isRanged: false, label: 'Gamma Contrast', property: 'gammaContrastFactor', range: [0, 3], step: 0.05, type: 'number' }, sigmoidalContrastFactor: { defaultValue: 0, // group: "color" isRanged: false, label: 'Sigmoidal Contrast', property: 'sigmoidalContrastFactor', range: [0, 50], step: 1, type: 'number' }, sigmoidalBiasFactor: { defaultValue: 0.5, // group: "color" isRanged: false, label: 'Sigmoidal Bias', property: 'sigmoidalBiasFactor', range: [0, 1], step: 0.01, type: 'number' }, saturationValue: { defaultValue: 1, // group: "color" isRanged: false, label: 'Saturation', property: 'saturationValue', range: [0, 2], step: 0.05, type: 'number' }, filterEnabled: { type: 'boolean', property: 'filterEnabled', defaultValue: false, // group: undefined label: 'Filter' }, filterRange: { defaultValue: [-1, 1], // group: "color" isRanged: true, label: 'Filter', property: 'filterRange', range: [-1, 1], step: 0.01, type: 'number' }, opacity: { defaultValue: 1, // group: "color" isRanged: false, label: 'Opacity', property: 'opacity', range: [0, 1], step: 0.05, type: 'number' }, _stacQuery: { defaultValue: null, type: 'input' }, singleBandName: { type: 'object-select', defaultValue: null, label: 'Name of single band to render', // defined dynamically from STAC item/collection options: [], property: 'singleBandName', group: '' }, enableTerrain: { type: 'boolean', defaultValue: true, label: 'Enable 3D terrain', group: '', property: 'enableTerrain', description: 'Use 3D terrain when available. Only affects Map View in 3D mode.' } }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmFzdGVyVGlsZUxheWVyU2NoZW1hIiwicmVxdWlyZSIsIl90eXBlcyIsIkRBVEFfU09VUkNFX0lEUyIsImV4cG9ydHMiLCJSQVNURVJfQ09MT1JfUkVTRVRfUEFSQU1TIiwiZ2FtbWFDb250cmFzdEZhY3RvciIsInNpZ21vaWRhbENvbnRyYXN0RmFjdG9yIiwic2lnbW9pZGFsQmlhc0ZhY3RvciIsInNhdHVyYXRpb25WYWx1ZSIsImR5bmFtaWNDb2xvciIsIkRFRkFVTFRfU0VOVElORUxfQ09MT1JfREVGQVVMVFMiLCJERUZBVUxUX01PRElTX0NPTE9SX0RFRkFVTFRTIiwiREVGQVVMVF9TRU5USU5FTF9CQU5EX01BUFBJTkciLCJjb2FzdGFsIiwiYmx1ZSIsImdyZWVuIiwicmVkIiwicmVkZWRnZTEiLCJyZWRlZGdlMiIsInJlZGVkZ2UzIiwibmlyIiwibmlyMDgiLCJuaXIwOSIsImNpcnJ1cyIsInN3aXIxMSIsInN3aXIxNiIsInN3aXIxMiIsInN3aXIyMiIsIkRFRkFVTFRfTU9ESVNfQkFORF9NQVBQSU5HIiwic3VyX3JlZmxfYjAxIiwic3VyX3JlZmxfYjAyIiwic3VyX3JlZmxfYjAzIiwic3VyX3JlZmxfYjA0Iiwic3VyX3JlZmxfYjA1Iiwic3VyX3JlZmxfYjA2Iiwic3VyX3JlZmxfYjA3IiwiTmFkaXJfUmVmbGVjdGFuY2VfQmFuZDEiLCJOYWRpcl9SZWZsZWN0YW5jZV9CYW5kMiIsIk5hZGlyX1JlZmxlY3RhbmNlX0JhbmQzIiwiTmFkaXJfUmVmbGVjdGFuY2VfQmFuZDQiLCJOYWRpcl9SZWZsZWN0YW5jZV9CYW5kNSIsIk5hZGlyX1JlZmxlY3RhbmNlX0JhbmQ2IiwiTmFkaXJfUmVmbGVjdGFuY2VfQmFuZDciLCJERUZBVUxUX0xBTkRTQVRfQzJfTDFfQkFORF9NQVBQSU5HIiwiREVGQVVMVF9MQU5EU0FUX0MyX0wyX0JBTkRfTUFQUElORyIsImx3aXIiLCJsd2lyMTEiLCJERUZBVUxUX0JBTkRfTUFQUElOR1MiLCJfZGVmaW5lUHJvcGVydHkyIiwiU0VOVElORUxfMl9MMUMiLCJTRU5USU5FTF8yX0wxQSIsIlNFTlRJTkVMXzJfQzFfTDJBIiwiU0VOVElORUxfMl9QUkVfQzFfTDJBIiwiTEFORFNBVF9DMl9MMSIsIkxBTkRTQVRfQzJfTDIiLCJNT0RJU18wOUExXzA2MSIsIk1PRElTXzQzQTRfMDYxIiwiTU9JRFNfMDlRMV8wNjEiLCJEQVRBX1NPVVJDRV9DT0xPUl9ERUZBVUxUUyIsIlBSRVNFVF9PUFRJT05TIiwidHJ1ZUNvbG9yIiwibGFiZWwiLCJpZCIsIlJhc3RlclRpbGVMYXllclByZXNldHMiLCJiYW5kQ29tYmluYXRpb24iLCJCYW5kQ29tYmluYXRpb24iLCJSZ2IiLCJjb21tb25OYW1lcyIsImluZnJhcmVkIiwiZGVzY3JpcHRpb24iLCJhZ3JpY3VsdHVyZSIsImZvcmVzdEJ1cm4iLCJuZHZpIiwiTm9ybWFsaXplZERpZmZlcmVuY2UiLCJpbmZvVXJsIiwic2F2aSIsIlNvaWxBZGp1c3RlZFZlZ2V0YXRpb25JbmRleCIsIm1zYXZpIiwiTW9kaWZpZWRTb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXgiLCJuZG1pIiwibmJyIiwibmJyMiIsInNpbmdsZUJhbmQiLCJTaW5nbGUiLCJaT09NX1JBTkdFUyIsIk1BWF9QSVhFTF9WQUxVRVMiLCJNYXRoIiwicG93IiwiQ0FURUdPUklDQUxfQ09MT1JNQVBfSUQiLCJDT0xPUk1BUF9PUFRJT05TIiwiUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzIiwiY2Zhc3RpZSIsInJwbHVtYm8iLCJzY2h3YXJ6d2FsZCIsInZpcmlkaXMiLCJwbGFzbWEiLCJpbmZlcm5vIiwibWFnbWEiLCJjaXZpZGlzIiwiZ3JleXMiLCJwdXJwbGVzIiwiYmx1ZXMiLCJncmVlbnMiLCJvcmFuZ2VzIiwicmVkcyIsInlsb3JiciIsInlsb3JyZCIsIm9ycmQiLCJwdXJkIiwicmRwdSIsImJ1cHUiLCJnbmJ1IiwicHVidSIsInlsZ25idSIsInB1YnVnbiIsImJ1Z24iLCJ5bGduIiwiYmluYXJ5IiwiZ3JheSIsImJvbmUiLCJwaW5rIiwic3ByaW5nIiwic3VtbWVyIiwiYXV0dW1uIiwid2ludGVyIiwiY29vbCIsIndpc3RpYSIsImhvdCIsImFmbWhvdCIsImdpc3RfaGVhdCIsImNvcHBlciIsInBpeWciLCJwcmduIiwiYnJiZyIsInB1b3IiLCJyZGd5IiwicmRidSIsInJkeWxidSIsInJkeWxnbiIsInNwZWN0cmFsIiwiY29vbHdhcm0iLCJid3IiLCJzZWlzbWljIiwidHdpbGlnaHQiLCJ0d2lsaWdodF9zaGlmdGVkIiwiaHN2IiwiZmxhZyIsInByaXNtIiwib2NlYW4iLCJnaXN0X2VhcnRoIiwidGVycmFpbiIsImdpc3Rfc3Rlcm4iLCJnbnVwbG90IiwiZ251cGxvdDIiLCJjbXJtYXAiLCJjdWJlaGVsaXgiLCJicmciLCJnaXN0X3JhaW5ib3ciLCJyYWluYm93IiwiamV0IiwibmlweV9zcGVjdHJhbCIsImdpc3RfbmNhciIsIlNUQUNfU0VBUkNIX1BST1ZJREVSUyIsInJhc3RlclZpc0NvbmZpZ3MiLCJwcmVzZXQiLCJ0eXBlIiwiZGVmYXVsdFZhbHVlIiwib3B0aW9ucyIsIk9iamVjdCIsInZhbHVlcyIsInByb3BlcnR5IiwiZ3JvdXAiLCJ1c2VTVEFDU2VhcmNoaW5nIiwic3RhY1NlYXJjaFByb3ZpZGVyIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImNvbG9ybWFwSWQiLCJjb2xvclJhbmdlIiwibGluZWFyUmVzY2FsaW5nRmFjdG9yIiwiaXNSYW5nZWQiLCJyYW5nZSIsInN0ZXAiLCJub25MaW5lYXJSZXNjYWxpbmciLCJmaWx0ZXJFbmFibGVkIiwiZmlsdGVyUmFuZ2UiLCJvcGFjaXR5IiwiX3N0YWNRdWVyeSIsInNpbmdsZUJhbmROYW1lIiwiZW5hYmxlVGVycmFpbiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9yYXN0ZXItdGlsZS9jb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMsIFJhc3RlclRpbGVMYXllclByZXNldHN9IGZyb20gJy4vcmFzdGVyLXRpbGUtbGF5ZXItc2NoZW1hJztcbmltcG9ydCB7XG4gIFZpc0NvbmZpZ0Jvb2xlYW4sXG4gIFZpc0NvbmZpZ051bWJlcixcbiAgVmlzQ29uZmlnUmFuZ2UsXG4gIFZpc0NvbmZpZ09iamVjdFNlbGVjdGlvbixcbiAgVmlzQ29uZmlnSW5wdXRcbn0gZnJvbSAnQGtlcGxlci5nbC90eXBlcyc7XG5cbmltcG9ydCB7Q29sb3JSZXNjYWxpbmcsIENvbmZpZ09wdGlvbiwgUHJlc2V0RGF0YSwgQmFuZENvbWJpbmF0aW9ufSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBLbm93biBEYXRhIFNvdXJjZSBJRHMgdGhhdCB3b3JrIHdpdGggY3VycmVudCBTVEFDIExheWVyIGxpbWl0YXRpb25zXG4gKi9cbmV4cG9ydCBlbnVtIERBVEFfU09VUkNFX0lEUyB7XG4gIFNFTlRJTkVMXzJfTDFDID0gJ3NlbnRpbmVsLTItbDFjJyxcbiAgU0VOVElORUxfMl9MMUEgPSAnc2VudGluZWwtMi1sMmEnLFxuICBTRU5USU5FTF8yX0MxX0wyQSA9ICdzZW50aW5lbC0yLWMxLWwyYScsXG4gIFNFTlRJTkVMXzJfUFJFX0MxX0wyQSA9ICdzZW50aW5lbC0yLXByZS1jMS1sMmEnLFxuICBMQU5EU0FUX0MyX0wxID0gJ2xhbmRzYXQtYzItbDEnLFxuICBMQU5EU0FUX0MyX0wyID0gJ2xhbmRzYXQtYzItbDInLFxuICBNT0RJU18wOUExXzA2MSA9ICdtb2Rpcy0wOUExLTA2MScsXG4gIE1PRElTXzQzQTRfMDYxID0gJ21vZGlzLTQzQTQtMDYxJyxcbiAgTU9JRFNfMDlRMV8wNjEgPSAnbW9kaXMtMDlRMS0wNjEnXG59XG5cbmV4cG9ydCBjb25zdCBSQVNURVJfQ09MT1JfUkVTRVRfUEFSQU1TID0ge1xuICBnYW1tYUNvbnRyYXN0RmFjdG9yOiAxLFxuICBzaWdtb2lkYWxDb250cmFzdEZhY3RvcjogMCxcbiAgc2lnbW9pZGFsQmlhc0ZhY3RvcjogMC41LFxuICBzYXR1cmF0aW9uVmFsdWU6IDEuMCxcbiAgZHluYW1pY0NvbG9yOiBmYWxzZVxufTtcblxuY29uc3QgREVGQVVMVF9TRU5USU5FTF9DT0xPUl9ERUZBVUxUUyA9IHtcbiAgZ2FtbWFDb250cmFzdEZhY3RvcjogMi4yLFxuICBzaWdtb2lkYWxDb250cmFzdEZhY3RvcjogMjMsXG4gIHNpZ21vaWRhbEJpYXNGYWN0b3I6IDAuMTIsXG4gIHNhdHVyYXRpb25WYWx1ZTogMi4wXG59O1xuXG5jb25zdCBERUZBVUxUX01PRElTX0NPTE9SX0RFRkFVTFRTID0ge1xuICBnYW1tYUNvbnRyYXN0RmFjdG9yOiAyLjAsXG4gIHNpZ21vaWRhbENvbnRyYXN0RmFjdG9yOiA4LFxuICBzaWdtb2lkYWxCaWFzRmFjdG9yOiAwLjEzLFxuICBzYXR1cmF0aW9uVmFsdWU6IDEuMVxufTtcblxuY29uc3QgREVGQVVMVF9TRU5USU5FTF9CQU5EX01BUFBJTkcgPSB7XG4gIGNvYXN0YWw6ICdCMDEnLFxuICBibHVlOiAnQjAyJyxcbiAgZ3JlZW46ICdCMDMnLFxuICByZWQ6ICdCMDQnLFxuICByZWRlZGdlMTogJ0IwNScsXG4gIHJlZGVkZ2UyOiAnQjA2JyxcbiAgcmVkZWRnZTM6ICdCMDcnLFxuICBuaXI6ICdCMDgnLFxuICBuaXIwODogJ0I4QScsXG4gIG5pcjA5OiAnQjA5JyxcbiAgY2lycnVzOiAnQjEwJyxcbiAgc3dpcjExOiAnQjExJyxcbiAgc3dpcjE2OiAnQjExJyxcbiAgc3dpcjEyOiAnQjEyJyxcbiAgc3dpcjIyOiAnQjEyJ1xufTtcblxuY29uc3QgREVGQVVMVF9NT0RJU19CQU5EX01BUFBJTkcgPSB7XG4gIHN1cl9yZWZsX2IwMTogJ0IwMScsXG4gIHN1cl9yZWZsX2IwMjogJ0IwMicsXG4gIHN1cl9yZWZsX2IwMzogJ0IwMycsXG4gIHN1cl9yZWZsX2IwNDogJ0IwNCcsXG4gIHN1cl9yZWZsX2IwNTogJ0IwNScsXG4gIHN1cl9yZWZsX2IwNjogJ0IwNicsXG4gIHN1cl9yZWZsX2IwNzogJ0IwNycsXG4gIE5hZGlyX1JlZmxlY3RhbmNlX0JhbmQxOiAnQjAxJyxcbiAgTmFkaXJfUmVmbGVjdGFuY2VfQmFuZDI6ICdCMDInLFxuICBOYWRpcl9SZWZsZWN0YW5jZV9CYW5kMzogJ0IwMycsXG4gIE5hZGlyX1JlZmxlY3RhbmNlX0JhbmQ0OiAnQjA0JyxcbiAgTmFkaXJfUmVmbGVjdGFuY2VfQmFuZDU6ICdCMDUnLFxuICBOYWRpcl9SZWZsZWN0YW5jZV9CYW5kNjogJ0IwNicsXG4gIE5hZGlyX1JlZmxlY3RhbmNlX0JhbmQ3OiAnQjA3J1xufTtcblxuY29uc3QgREVGQVVMVF9MQU5EU0FUX0MyX0wxX0JBTkRfTUFQUElORyA9IHtcbiAgZ3JlZW46ICdCMDEnLFxuICByZWQ6ICdCMDInLFxuICBuaXIwODogJ0IwMycsXG4gIG5pcjA5OiAnQjA0J1xufTtcblxuY29uc3QgREVGQVVMVF9MQU5EU0FUX0MyX0wyX0JBTkRfTUFQUElORyA9IHtcbiAgYmx1ZTogJ0IwMScsXG4gIGdyZWVuOiAnQjAyJyxcbiAgcmVkOiAnQjAzJyxcbiAgbmlyMDg6ICdCMDQnLFxuICBzd2lyMTY6ICdCMDUnLFxuICBsd2lyOiAnQjA2JyxcbiAgc3dpcjIyOiAnQjA3JyxcbiAgY29hc3RhbDogJ0IwMScsXG4gIGx3aXIxMTogJ0IwNidcbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JBTkRfTUFQUElOR1MgPSB7XG4gIFtEQVRBX1NPVVJDRV9JRFMuU0VOVElORUxfMl9MMUNdOiBERUZBVUxUX1NFTlRJTkVMX0JBTkRfTUFQUElORyxcbiAgW0RBVEFfU09VUkNFX0lEUy5TRU5USU5FTF8yX0wxQV06IERFRkFVTFRfU0VOVElORUxfQkFORF9NQVBQSU5HLFxuICBbREFUQV9TT1VSQ0VfSURTLlNFTlRJTkVMXzJfQzFfTDJBXTogREVGQVVMVF9TRU5USU5FTF9CQU5EX01BUFBJTkcsXG4gIFtEQVRBX1NPVVJDRV9JRFMuU0VOVElORUxfMl9QUkVfQzFfTDJBXTogREVGQVVMVF9TRU5USU5FTF9CQU5EX01BUFBJTkcsXG4gIFtEQVRBX1NPVVJDRV9JRFMuTEFORFNBVF9DMl9MMV06IERFRkFVTFRfTEFORFNBVF9DMl9MMV9CQU5EX01BUFBJTkcsXG4gIFtEQVRBX1NPVVJDRV9JRFMuTEFORFNBVF9DMl9MMl06IERFRkFVTFRfTEFORFNBVF9DMl9MMl9CQU5EX01BUFBJTkcsXG4gIFtEQVRBX1NPVVJDRV9JRFMuTU9ESVNfMDlBMV8wNjFdOiBERUZBVUxUX01PRElTX0JBTkRfTUFQUElORyxcbiAgW0RBVEFfU09VUkNFX0lEUy5NT0RJU180M0E0XzA2MV06IERFRkFVTFRfTU9ESVNfQkFORF9NQVBQSU5HLFxuICBbREFUQV9TT1VSQ0VfSURTLk1PSURTXzA5UTFfMDYxXTogREVGQVVMVF9NT0RJU19CQU5EX01BUFBJTkdcbn07XG5cbi8qKlxuICogUGVyLWRhdGEgc291cmNlIGNvbG9yIHJlc2NhbGluZyBkZWZhdWx0cyBmb3Iga25vd24gY29sbGVjdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IERBVEFfU09VUkNFX0NPTE9SX0RFRkFVTFRTOiBSZWNvcmQ8REFUQV9TT1VSQ0VfSURTLCBDb2xvclJlc2NhbGluZz4gPSB7XG4gIC8vIE5vdGU6IGdvb2QgZm9yIFRydWUgQ29sb3IsIHRvbyBzYXR1cmF0ZWQgZm9yIG90aGVyIGNoYW5uZWxzXG4gIFtEQVRBX1NPVVJDRV9JRFMuU0VOVElORUxfMl9MMUNdOiBERUZBVUxUX1NFTlRJTkVMX0NPTE9SX0RFRkFVTFRTLFxuICBbREFUQV9TT1VSQ0VfSURTLlNFTlRJTkVMXzJfTDFBXTogREVGQVVMVF9TRU5USU5FTF9DT0xPUl9ERUZBVUxUUyxcbiAgW0RBVEFfU09VUkNFX0lEUy5TRU5USU5FTF8yX0MxX0wyQV06IERFRkFVTFRfU0VOVElORUxfQ09MT1JfREVGQVVMVFMsXG4gIFtEQVRBX1NPVVJDRV9JRFMuU0VOVElORUxfMl9QUkVfQzFfTDJBXTogREVGQVVMVF9TRU5USU5FTF9DT0xPUl9ERUZBVUxUUyxcbiAgW0RBVEFfU09VUkNFX0lEUy5MQU5EU0FUX0MyX0wxXTogREVGQVVMVF9TRU5USU5FTF9DT0xPUl9ERUZBVUxUUyxcbiAgW0RBVEFfU09VUkNFX0lEUy5MQU5EU0FUX0MyX0wyXTogREVGQVVMVF9TRU5USU5FTF9DT0xPUl9ERUZBVUxUUyxcbiAgW0RBVEFfU09VUkNFX0lEUy5NT0RJU18wOUExXzA2MV06IERFRkFVTFRfTU9ESVNfQ09MT1JfREVGQVVMVFMsXG4gIFtEQVRBX1NPVVJDRV9JRFMuTU9ESVNfNDNBNF8wNjFdOiBERUZBVUxUX01PRElTX0NPTE9SX0RFRkFVTFRTLFxuICBbREFUQV9TT1VSQ0VfSURTLk1PSURTXzA5UTFfMDYxXTogREVGQVVMVF9NT0RJU19DT0xPUl9ERUZBVUxUU1xufTtcblxuLyoqXG4gKiBBdmFpbGFibGUgXCJwcmVzZXRzXCJcbiAqXG4gKiBJIGRlZmluZSBhIFwicHJlc2V0XCIgYXMgb25lIHNwZWNpZmljIG1hbm5lciBvZiBsb2FkaW5nIGJhbmRzIGFuZCBjb21iaW5pbmcgdGhlbSBvbiB0aGUgZnJvbnRlbmQuXG4gKiBJbiB0aGUgZnV0dXJlIEkgZXhwZWN0IHdlJ2xsIHdhbnQgYSBVSSB0aGF0IGdpdmVzIHRoZSB1c2VyIGZ1bGwgZmxleGliaWxpdHkuXG4gKi9cbmV4cG9ydCBjb25zdCBQUkVTRVRfT1BUSU9OUzogUmVjb3JkPHN0cmluZywgUHJlc2V0RGF0YT4gPSB7XG4gIHRydWVDb2xvcjoge1xuICAgIGxhYmVsOiAnVHJ1ZSBDb2xvcicsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllclByZXNldHMudHJ1ZUNvbG9yLFxuICAgIGJhbmRDb21iaW5hdGlvbjogQmFuZENvbWJpbmF0aW9uLlJnYixcbiAgICBjb21tb25OYW1lczogWydyZWQnLCAnZ3JlZW4nLCAnYmx1ZSddXG4gIH0sXG4gIGluZnJhcmVkOiB7XG4gICAgbGFiZWw6ICdJbmZyYXJlZCcsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllclByZXNldHMuaW5mcmFyZWQsXG4gICAgYmFuZENvbWJpbmF0aW9uOiBCYW5kQ29tYmluYXRpb24uUmdiLFxuICAgIGNvbW1vbk5hbWVzOiBbJ25pcicsICdyZWQnLCAnZ3JlZW4nXSxcbiAgICBkZXNjcmlwdGlvbjogJ0ZhbHNlLWNvbG9yIGluZnJhcmVkIGNvbXBvc2l0ZS4gTmVhci1pbmZyYXJlZCwgcmVkLCBncmVlbiBtYXBwZWQgdG8gUkdCJ1xuICB9LFxuICBhZ3JpY3VsdHVyZToge1xuICAgIGxhYmVsOiAnQWdyaWN1bHR1cmUnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJQcmVzZXRzLmFncmljdWx0dXJlLFxuICAgIGJhbmRDb21iaW5hdGlvbjogQmFuZENvbWJpbmF0aW9uLlJnYixcbiAgICBjb21tb25OYW1lczogWydzd2lyMTYnLCAnbmlyJywgJ2JsdWUnXSxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdGYWxzZS1jb2xvciBhZ3JpY3VsdHVyZSBjb21wb3NpdGUuIFNob3J0LXdhdmUgaW5mcmFyZWQgMSwgbmVhci1pbmZyYXJlZCwgYmx1ZSBtYXBwZWQgdG8gUkdCLidcbiAgfSxcbiAgZm9yZXN0QnVybjoge1xuICAgIGxhYmVsOiAnRm9yZXN0IEJ1cm4nLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJQcmVzZXRzLmZvcmVzdEJ1cm4sXG4gICAgYmFuZENvbWJpbmF0aW9uOiBCYW5kQ29tYmluYXRpb24uUmdiLFxuICAgIGNvbW1vbk5hbWVzOiBbJ3N3aXIyMicsICduaXInLCAnYmx1ZSddLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0ZhbHNlLWNvbG9yIGZvcmVzdCBidXJuIGNvbXBvc2l0ZS4gU2hvcnQtd2F2ZSBpbmZyYXJlZCAyLCBuZWFyLWluZnJhcmVkLCBibHVlIG1hcHBlZCB0byBSR0InXG4gIH0sXG4gIG5kdmk6IHtcbiAgICBsYWJlbDogJ05EVkknLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJQcmVzZXRzLm5kdmksXG4gICAgYmFuZENvbWJpbmF0aW9uOiBCYW5kQ29tYmluYXRpb24uTm9ybWFsaXplZERpZmZlcmVuY2UsXG4gICAgY29tbW9uTmFtZXM6IFsnbmlyJywgJ3JlZCddLFxuICAgIGRlc2NyaXB0aW9uOiAnTm9ybWFsaXplZCBEaWZmZXJlbmNlIFZlZ2V0YXRpb24gSW5kZXgnLFxuICAgIGluZm9Vcmw6XG4gICAgICAnaHR0cHM6Ly93d3cudXNncy5nb3YvY29yZS1zY2llbmNlLXN5c3RlbXMvbmxpL2xhbmRzYXQvbGFuZHNhdC1ub3JtYWxpemVkLWRpZmZlcmVuY2UtdmVnZXRhdGlvbi1pbmRleCdcbiAgfSxcbiAgLy8gQ29tbWVudCB0aGlzIG91dCBmb3Igbm93LCBiZWNhdXNlIGluIHRlc3RpbmcgaXQgbG9va3MgbGlrZSB0aGVyZSdzIGFuIG92ZXJmbG93IG9mIHNvbWUgc29ydDtcbiAgLy8gaW5kZXggdmFsdWVzIHNob3VsZCBiZSBiZXR3ZWVuIC0xIGFuZCAxLCBidXQgdmFsdWVzIGxvb2sgd2F5IG91dCBvZiBib3VuZHNcbiAgLy8gZXZpOiB7XG4gIC8vICAgbGFiZWw6ICdFVkknLFxuICAvLyAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJQcmVzZXRzLmV2aSxcbiAgLy8gICBiYW5kQ29tYmluYXRpb246ICdlbmhhbmNlZFZlZ2V0YXRpb25JbmRleCcsXG4gIC8vICAgY29tbW9uTmFtZXM6IFsnbmlyJywgJ3JlZCcsICdibHVlJ11cbiAgLy8gfSxcbiAgc2F2aToge1xuICAgIGxhYmVsOiAnU0FWSScsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllclByZXNldHMuc2F2aSxcbiAgICBiYW5kQ29tYmluYXRpb246IEJhbmRDb21iaW5hdGlvbi5Tb2lsQWRqdXN0ZWRWZWdldGF0aW9uSW5kZXgsXG4gICAgY29tbW9uTmFtZXM6IFsnbmlyJywgJ3JlZCddLFxuICAgIGRlc2NyaXB0aW9uOiAnU29pbCBBZGp1c3RlZCBWZWdldGF0aW9uIEluZGV4JyxcbiAgICBpbmZvVXJsOlxuICAgICAgJ2h0dHBzOi8vd3d3LnVzZ3MuZ292L2NvcmUtc2NpZW5jZS1zeXN0ZW1zL25saS9sYW5kc2F0L2xhbmRzYXQtc29pbC1hZGp1c3RlZC12ZWdldGF0aW9uLWluZGV4J1xuICB9LFxuICBtc2F2aToge1xuICAgIGxhYmVsOiAnTVNBVkknLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJQcmVzZXRzLm1zYXZpLFxuICAgIGJhbmRDb21iaW5hdGlvbjogQmFuZENvbWJpbmF0aW9uLk1vZGlmaWVkU29pbEFkanVzdGVkVmVnZXRhdGlvbkluZGV4LFxuICAgIGNvbW1vbk5hbWVzOiBbJ25pcicsICdyZWQnXSxcbiAgICBkZXNjcmlwdGlvbjogJ01vZGlmaWVkIFNvaWwgQWRqdXN0ZWQgVmVnZXRhdGlvbiBJbmRleCcsXG4gICAgaW5mb1VybDpcbiAgICAgICdodHRwczovL3d3dy51c2dzLmdvdi9jb3JlLXNjaWVuY2Utc3lzdGVtcy9ubGkvbGFuZHNhdC9sYW5kc2F0LW1vZGlmaWVkLXNvaWwtYWRqdXN0ZWQtdmVnZXRhdGlvbi1pbmRleCdcbiAgfSxcbiAgbmRtaToge1xuICAgIGxhYmVsOiAnTkRNSScsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllclByZXNldHMubmRtaSxcbiAgICBiYW5kQ29tYmluYXRpb246IEJhbmRDb21iaW5hdGlvbi5Ob3JtYWxpemVkRGlmZmVyZW5jZSxcbiAgICBjb21tb25OYW1lczogWyduaXInLCAnc3dpcjE2J10sXG4gICAgZGVzY3JpcHRpb246ICdOb3JtYWxpemVkIERpZmZlcmVuY2UgTW9pc3R1cmUgSW5kZXgnLFxuICAgIGluZm9Vcmw6XG4gICAgICAnaHR0cHM6Ly93d3cudXNncy5nb3YvY29yZS1zY2llbmNlLXN5c3RlbXMvbmxpL2xhbmRzYXQvbm9ybWFsaXplZC1kaWZmZXJlbmNlLW1vaXN0dXJlLWluZGV4J1xuICB9LFxuICBuYnI6IHtcbiAgICBsYWJlbDogJ05CUicsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllclByZXNldHMubmJyLFxuICAgIGJhbmRDb21iaW5hdGlvbjogQmFuZENvbWJpbmF0aW9uLk5vcm1hbGl6ZWREaWZmZXJlbmNlLFxuICAgIGNvbW1vbk5hbWVzOiBbJ25pcicsICdzd2lyMjInXSxcbiAgICBkZXNjcmlwdGlvbjogJ05vcm1hbGl6ZWQgQnVybiBSYXRpbycsXG4gICAgaW5mb1VybDogJ2h0dHBzOi8vd3d3LnVzZ3MuZ292L2NvcmUtc2NpZW5jZS1zeXN0ZW1zL25saS9sYW5kc2F0L2xhbmRzYXQtbm9ybWFsaXplZC1idXJuLXJhdGlvJ1xuICB9LFxuICBuYnIyOiB7XG4gICAgbGFiZWw6ICdOQlIgMicsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllclByZXNldHMubmJyMixcbiAgICBiYW5kQ29tYmluYXRpb246IEJhbmRDb21iaW5hdGlvbi5Ob3JtYWxpemVkRGlmZmVyZW5jZSxcbiAgICBjb21tb25OYW1lczogWydzd2lyMTYnLCAnc3dpcjIyJ10sXG4gICAgZGVzY3JpcHRpb246ICdOb3JtYWxpemVkIEJ1cm4gUmF0aW8gMicsXG4gICAgaW5mb1VybDogJ2h0dHBzOi8vd3d3LnVzZ3MuZ292L2NvcmUtc2NpZW5jZS1zeXN0ZW1zL25saS9sYW5kc2F0L2xhbmRzYXQtbm9ybWFsaXplZC1idXJuLXJhdGlvLTInXG4gIH0sXG4gIHNpbmdsZUJhbmQ6IHtcbiAgICBsYWJlbDogJ1NpbmdsZSBCYW5kJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyUHJlc2V0cy5zaW5nbGVCYW5kLFxuICAgIGJhbmRDb21iaW5hdGlvbjogQmFuZENvbWJpbmF0aW9uLlNpbmdsZSxcbiAgICBkZXNjcmlwdGlvbjogJ1JlbmRlciBhIHNpbmdsZSBiYW5kIGRhdGEnXG4gIH1cbn07XG5cbi8qKlxuICogVmFsaWQgem9vbSByYW5nZXMgZm9yIGVhY2ggZGF0YSBzb3VyY2VcbiAqXG4gKiBUaGUgbWF4aW11bSB6b29tIGlzIGRlcml2ZWQgZnJvbSB0aGUgcmVzb2x1dGlvbiBvZiBlYWNoIGRhdGEgc291cmNlLlxuICogVGhlIG1pbmltdW0gem9vbSByZWxhdGVzIHRvIHRoZSBudW1iZXIgb2Ygb3ZlcnZpZXdzIGluIHRoZSBDT0dzIGF0IHRoZSBzb3VyY2UuIFRoZSBtb3JlXG4gKiBvdmVydmlld3MsIHRoZSBlYXNpZXIgaXQgaXMgdG8gY3JlYXRlIGRvd25zYW1wbGVkIHRpbGVzLiBUaGUgbWluaW11bSB6b29tcyBjYW4gYmUgcmVkdWNlZCBidXQgaXRcbiAqIHRha2VzIGxvbmdlciB0byBzZXJ2ZSBsb3ctem9vbSB0aWxlcyBzaW5jZSB0aGUgc2VydmVyIG11c3QgcmVhZCBmcm9tIG1hbnkgaW1hZ2Ugc291cmNlcy5cbiAqL1xuLy8gVE9ETzogdXNlIHJlbmRlcjptYXhfb3ZlcnZpZXdfZ3NkIGZyb20gU1RBQ1xuZXhwb3J0IGNvbnN0IFpPT01fUkFOR0VTOiBSZWNvcmQ8REFUQV9TT1VSQ0VfSURTLCBbbnVtYmVyLCBudW1iZXJdPiA9IHtcbiAgW0RBVEFfU09VUkNFX0lEUy5TRU5USU5FTF8yX0MxX0wyQV06IFs4LCAxM10sXG4gIFtEQVRBX1NPVVJDRV9JRFMuU0VOVElORUxfMl9MMUFdOiBbOCwgMTNdLFxuICBbREFUQV9TT1VSQ0VfSURTLlNFTlRJTkVMXzJfTDFDXTogWzgsIDEzXSxcbiAgW0RBVEFfU09VUkNFX0lEUy5TRU5USU5FTF8yX1BSRV9DMV9MMkFdOiBbOCwgMTNdLFxuICBbREFUQV9TT1VSQ0VfSURTLkxBTkRTQVRfQzJfTDFdOiBbNywgMTJdLFxuICBbREFUQV9TT1VSQ0VfSURTLkxBTkRTQVRfQzJfTDJdOiBbNywgMTJdLFxuICBbREFUQV9TT1VSQ0VfSURTLk1PRElTXzA5QTFfMDYxXTogWzcsIDEzXSxcbiAgW0RBVEFfU09VUkNFX0lEUy5NT0RJU180M0E0XzA2MV06IFs3LCAxM10sXG4gIFtEQVRBX1NPVVJDRV9JRFMuTU9JRFNfMDlRMV8wNjFdOiBbNywgMTNdXG59O1xuXG4vKipcbiAqIEJpdCBkZXB0aCBmb3IgZWFjaCBkYXRhIHNvdXJjZVxuICogU2VudGluZWwtMiBpcyAxMi1iaXQ7IExhbmRzYXQtOCBpcyAxNi1iaXQ7IFBsYW5ldCBpcyAxMi1iaXQ7IE5BSVAgaXMgOC1iaXRcbiAqL1xuLy8gVE9ETzogdXNlIHJhbmdlIHZhbHVlIGFuZCBkdHlwZSBpbiBTVEFDIGNvbGxlY3Rpb24gaW5zdGVhZCBvZiB0aGlzXG5leHBvcnQgY29uc3QgTUFYX1BJWEVMX1ZBTFVFUzogUmVjb3JkPERBVEFfU09VUkNFX0lEUywgbnVtYmVyPiA9IHtcbiAgW0RBVEFfU09VUkNFX0lEUy5TRU5USU5FTF8yX0MxX0wyQV06IE1hdGgucG93KDIsIDEyKSAtIDEsXG4gIFtEQVRBX1NPVVJDRV9JRFMuU0VOVElORUxfMl9MMUFdOiBNYXRoLnBvdygyLCAxMikgLSAxLFxuICBbREFUQV9TT1VSQ0VfSURTLlNFTlRJTkVMXzJfTDFDXTogTWF0aC5wb3coMiwgMTIpIC0gMSxcbiAgW0RBVEFfU09VUkNFX0lEUy5TRU5USU5FTF8yX1BSRV9DMV9MMkFdOiBNYXRoLnBvdygyLCAxMikgLSAxLFxuICBbREFUQV9TT1VSQ0VfSURTLkxBTkRTQVRfQzJfTDFdOiBNYXRoLnBvdygyLCAxNikgLSAxLFxuICBbREFUQV9TT1VSQ0VfSURTLkxBTkRTQVRfQzJfTDJdOiBNYXRoLnBvdygyLCAxNikgLSAxLFxuICBbREFUQV9TT1VSQ0VfSURTLk1PRElTXzA5QTFfMDYxXTogTWF0aC5wb3coMiwgMTIpIC0gMSxcbiAgW0RBVEFfU09VUkNFX0lEUy5NT0RJU180M0E0XzA2MV06IE1hdGgucG93KDIsIDEyKSAtIDEsXG4gIFtEQVRBX1NPVVJDRV9JRFMuTU9JRFNfMDlRMV8wNjFdOiBNYXRoLnBvdygyLCAxMikgLSAxXG59O1xuXG4vKipcbiAqIElkIGZvciBjYXRlZ29yaWNhbCBjb2xvcm1hcC4gVW5saWtlIG1vc3QgY29sb3JtYXBzLiBDYXRlZ29yaWNhbCBjb2xvcm1hcCBpbWFnZSBpcyBjcmVhdGVkXG4gKiBmcm9tIGNvbG9ybWFwIHNldCBpbiB2aXNDb25maWdcbiAqL1xuZXhwb3J0IGNvbnN0IENBVEVHT1JJQ0FMX0NPTE9STUFQX0lEID0gJ19jYXRlZ29yaWNhbCc7XG5cbi8qKlxuICogQSBsaXN0IG9mIGF2YWlsYWJsZSBjb2xvcm1hcHMuIENvbG9ybWFwcyBhcmUgb3JpZ2luYWxseSBkZXJpdmVkIGZyb21cbiAqIG1hdHBsb3RsaWIsIHRoZW4gdmlhIHJpby10aWxlci4gQ29sb3JtYXBzIGFyZSAxMHgyNTYgUE5HIGltYWdlcyB0aGF0IGFyZVxuICogbG9hZGVkIGFzIHRleHR1cmVzXG4gKi9cblxuZXhwb3J0IGNvbnN0IENPTE9STUFQX09QVElPTlM6IHJlYWRvbmx5IENvbmZpZ09wdGlvbltdID0gW1xuICB7XG4gICAgbGFiZWw6ICdDZmFzdGllJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLmNmYXN0aWVcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnUnBsdW1ibycsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5ycGx1bWJvXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1NjaHdhcnp3YWxkJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLnNjaHdhcnp3YWxkXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1ZpcmlkaXMnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMudmlyaWRpc1xuICB9LFxuICB7XG4gICAgbGFiZWw6ICdQbGFzbWEnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMucGxhc21hXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0luZmVybm8nLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuaW5mZXJub1xuICB9LFxuICB7XG4gICAgbGFiZWw6ICdNYWdtYScsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5tYWdtYVxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdDaXZpZGlzJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLmNpdmlkaXNcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnR3JleXMnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuZ3JleXNcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnUHVycGxlcycsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5wdXJwbGVzXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0JsdWVzJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLmJsdWVzXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0dyZWVucycsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5ncmVlbnNcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnT3JhbmdlcycsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5vcmFuZ2VzXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1JlZHMnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMucmVkc1xuICB9LFxuICB7XG4gICAgbGFiZWw6ICdZbC1Pci1CcicsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy55bG9yYnJcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnWWwtT3ItUmQnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMueWxvcnJkXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ09yLVJkJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLm9ycmRcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnUHUtUmQnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMucHVyZFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdSZC1QdScsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5yZHB1XG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0J1LVB1JyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLmJ1cHVcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnR24tQnUnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuZ25idVxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdQdS1CdScsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5wdWJ1XG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1lsLUduLUJ1JyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLnlsZ25idVxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdQdS1CdS1HbicsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5wdWJ1Z25cbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnQmx1ZS1HbicsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5idWduXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1lsLUduJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLnlsZ25cbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnVy1uLUInLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuYmluYXJ5XG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0Itbi1XJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLmdyYXlcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnQm9uZScsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5ib25lXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1BpbmsnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMucGlua1xuICB9LFxuICB7XG4gICAgbGFiZWw6ICdTcHJpbmcnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuc3ByaW5nXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1N1bW1lcicsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5zdW1tZXJcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnQXV0dW1uJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLmF1dHVtblxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdXaW50ZXInLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMud2ludGVyXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0Nvb2wnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuY29vbFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdXaXN0aWEnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMud2lzdGlhXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0hvdCcsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5ob3RcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnQWZtaG90JyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLmFmbWhvdFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdIZWF0JyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLmdpc3RfaGVhdFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdDb3BwZXInLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuY29wcGVyXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1BpLUdyZWVuJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLnBpeWdcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnUHItR24nLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMucHJnblxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdCci1CZycsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5icmJnXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1B1LU9yJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLnB1b3JcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnUmQtR3knLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMucmRneVxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdSZC1CdScsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5yZGJ1XG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1JkLVlsLUJ1JyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLnJkeWxidVxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdSZC1ZbC1HbicsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5yZHlsZ25cbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnU3BlY3RyYWwnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuc3BlY3RyYWxcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnQ29vbC1XYXJtJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLmNvb2x3YXJtXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0ItVy1SJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLmJ3clxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdTZWlzbWljJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLnNlaXNtaWNcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnVHdpbGlnaHQnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMudHdpbGlnaHRcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnVHdpbGlnaHQgU2hpZnRlZCcsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy50d2lsaWdodF9zaGlmdGVkXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0hTVicsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5oc3ZcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnRmxhZycsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5mbGFnXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1ByaXNtJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLnByaXNtXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ09jZWFuJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLm9jZWFuXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0dpc3QgRWFydGgnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuZ2lzdF9lYXJ0aFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdUZXJyYWluJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLnRlcnJhaW5cbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnR2lzdCBTdGVybicsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5naXN0X3N0ZXJuXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0dudXBsb3QnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuZ251cGxvdFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdHbnVwbG90MicsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5nbnVwbG90MlxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdDbXJtYXAnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuY21ybWFwXG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ0N1YmVoZWxpeCcsXG4gICAgaWQ6IFJhc3RlclRpbGVMYXllckNvbG9yTWFwcy5jdWJlaGVsaXhcbiAgfSxcbiAge1xuICAgIGxhYmVsOiAnQnJnJyxcbiAgICBpZDogUmFzdGVyVGlsZUxheWVyQ29sb3JNYXBzLmJyZ1xuICB9LFxuICB7XG4gICAgbGFiZWw6ICdHaXN0IFJhaW5ib3cnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuZ2lzdF9yYWluYm93XG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ1JhaW5ib3cnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMucmFpbmJvd1xuICB9LFxuICB7XG4gICAgbGFiZWw6ICdKZXQnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuamV0XG4gIH0sXG4gIHtcbiAgICBsYWJlbDogJ05pcHkgU3BlY3RyYWwnLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMubmlweV9zcGVjdHJhbFxuICB9LFxuICB7XG4gICAgbGFiZWw6ICdHaXN0IE5DQVInLFxuICAgIGlkOiBSYXN0ZXJUaWxlTGF5ZXJDb2xvck1hcHMuZ2lzdF9uY2FyXG4gIH1cbl07XG5cbmNvbnN0IFNUQUNfU0VBUkNIX1BST1ZJREVSUzogQ29uZmlnT3B0aW9uW10gPSBbXG4gIC8vIHtcbiAgLy8gICBsYWJlbDogJ01pY3Jvc29mdCBQbGFuZXRhcnkgQ29tcHV0ZXInLFxuICAvLyAgIGlkOiAnbWljcm9zb2Z0J1xuICAvLyB9LFxuICB7XG4gICAgbGFiZWw6ICdFbGVtZW50IDg0IEVhcnRoIFNlYXJjaCAoQVdTKScsXG4gICAgaWQ6ICdlYXJ0aC1zZWFyY2gnXG4gIH1cbl07XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byBiZSBleHBvc2VkIHRocm91Z2ggdGhlIFVJXG4gKi9cbmV4cG9ydCBjb25zdCByYXN0ZXJWaXNDb25maWdzID0ge1xuICBwcmVzZXQ6IHtcbiAgICB0eXBlOiAnb2JqZWN0LXNlbGVjdCcsXG4gICAgZGVmYXVsdFZhbHVlOiAndHJ1ZUNvbG9yJyxcbiAgICBsYWJlbDogJ1ByZXNldCcsXG4gICAgb3B0aW9uczogT2JqZWN0LnZhbHVlcyhQUkVTRVRfT1BUSU9OUyksXG4gICAgcHJvcGVydHk6ICdwcmVzZXQnLFxuICAgIGdyb3VwOiAnJ1xuICB9IGFzIFZpc0NvbmZpZ09iamVjdFNlbGVjdGlvbixcbiAgdXNlU1RBQ1NlYXJjaGluZzoge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBwcm9wZXJ0eTogJ3VzZVNUQUNTZWFyY2hpbmcnLFxuICAgIGRlZmF1bHRWYWx1ZTogZmFsc2UsXG4gICAgbGFiZWw6ICdVc2UgU1RBQyBTZWFyY2hpbmcnXG4gIH0gYXMgVmlzQ29uZmlnQm9vbGVhbixcbiAgc3RhY1NlYXJjaFByb3ZpZGVyOiB7XG4gICAgdHlwZTogJ29iamVjdC1zZWxlY3QnLFxuICAgIGRlZmF1bHRWYWx1ZTogJ2VhcnRoLXNlYXJjaCcsXG4gICAgbGFiZWw6ICdTVEFDIFNlYXJjaCBQcm92aWRlcicsXG4gICAgb3B0aW9uczogU1RBQ19TRUFSQ0hfUFJPVklERVJTLFxuICAgIHByb3BlcnR5OiAnc3RhY1NlYXJjaFByb3ZpZGVyJ1xuICB9IGFzIFZpc0NvbmZpZ09iamVjdFNlbGVjdGlvbixcbiAgc3RhcnREYXRlOiB7XG4gICAgdHlwZTogJ2lucHV0JyxcbiAgICBkZWZhdWx0VmFsdWU6ICcyMDIwLTAyLTAyJyxcbiAgICBsYWJlbDogJ1N0YXJ0IERhdGUnLFxuICAgIHByb3BlcnR5OiAnc3RhcnREYXRlJ1xuICB9IGFzIFZpc0NvbmZpZ0lucHV0LFxuICBlbmREYXRlOiB7XG4gICAgdHlwZTogJ2lucHV0JyxcbiAgICBkZWZhdWx0VmFsdWU6ICcyMDIwLTAzLTAyJyxcbiAgICBsYWJlbDogJ0VuZCBEYXRlJyxcbiAgICBwcm9wZXJ0eTogJ2VuZERhdGUnXG4gIH0gYXMgVmlzQ29uZmlnSW5wdXQsXG4gIGR5bmFtaWNDb2xvcjoge1xuICAgIHR5cGU6ICdib29sZWFuJyxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIGxhYmVsOiAnRHluYW1pYyBDb2xvcicsXG4gICAgZ3JvdXA6ICcnLFxuICAgIHByb3BlcnR5OiAnZHluYW1pY0NvbG9yJyxcbiAgICBkZXNjcmlwdGlvbjogJ1VzZSBhIGR5bmFtaWMgY29sb3Igc2NhbGUgYmFzZWQgb24gZGF0YSB2aXNpYmxlIGluIHRoZSB2aWV3cG9ydCdcbiAgfSBhcyBWaXNDb25maWdCb29sZWFuLFxuICBjb2xvcm1hcElkOiB7XG4gICAgdHlwZTogJ29iamVjdC1zZWxlY3QnLFxuICAgIGRlZmF1bHRWYWx1ZTogJ2NmYXN0aWUnLFxuICAgIGxhYmVsOiAnQ29sb3JtYXAnLFxuICAgIG9wdGlvbnM6IENPTE9STUFQX09QVElPTlMsXG4gICAgcHJvcGVydHk6ICdjb2xvcm1hcElkJyxcbiAgICBncm91cDogJydcbiAgfSBhcyBWaXNDb25maWdPYmplY3RTZWxlY3Rpb24sXG4gIC8vIGtlcGxlcidzIHZpc0NvbmZpZyBmcm9tIGtlcGxlci5nbCBodHRwczovL2dpdGh1Yi5jb20vZm91cnNxdWFyZS9rZXBsZXIuZ2wvYmxvYi80OTBhODkzOGZmYTFmYWMwMjVlOGQxOTk3NDgxYWNjMWJmZmU0YWJkL3NyYy9sYXllcnMvbGF5ZXItZmFjdG9yeS5qcyNMMjI4XG4gIC8vIGtleSBgY29sb3JSYW5nZWAgaXMgcmVxdWlyZWQgYmVjdWFzZSBpdCBpcyBoYXJkY29kZWQgaW4ga2VwbGVyLmdsXG4gIC8vIHRvIG1ha2Ugc2hhbGxvdyBjb3B5IG9mIHRoZSB2aXNDb25maWcgaXRlbVxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZm91cnNxdWFyZS9rZXBsZXIuZ2wvYmxvYi80OTBhODkzOGZmYTFmYWMwMjVlOGQxOTk3NDgxYWNjMWJmZmU0YWJkL3NyYy9yZWR1Y2Vycy92aXMtc3RhdGUtbWVyZ2VyLmpzI0w3MzZcbiAgY29sb3JSYW5nZTogJ2NvbG9yUmFuZ2UnIGFzIGNvbnN0LFxuICBsaW5lYXJSZXNjYWxpbmdGYWN0b3I6IHtcbiAgICBkZWZhdWx0VmFsdWU6IFswLCAxXSxcbiAgICAvLyBncm91cDogXCJjb2xvclwiXG4gICAgaXNSYW5nZWQ6IHRydWUsXG4gICAgbGFiZWw6ICdMaW5lYXIgUmVzY2FsaW5nIEZhY3RvcicsXG4gICAgcHJvcGVydHk6ICdsaW5lYXJSZXNjYWxpbmdGYWN0b3InLFxuICAgIHJhbmdlOiBbMCwgMV0sXG4gICAgc3RlcDogMC4wMSxcbiAgICB0eXBlOiAnbnVtYmVyJ1xuICB9IGFzIFZpc0NvbmZpZ1JhbmdlLFxuICAvLyBOb24tbGluZWFyIHJlc2NhbGluZyBmb3IgdHJ1ZS1jb2xvciBpbWFnZXNcbiAgLy8gSWYgZmFsc2UsIGltcGxpZXMgbGluZWFyIHJlc2NhbGluZ1xuICBub25MaW5lYXJSZXNjYWxpbmc6IHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgcHJvcGVydHk6ICdub25MaW5lYXJSZXNjYWxpbmcnLFxuICAgIGRlZmF1bHRWYWx1ZTogdHJ1ZSxcbiAgICAvLyBncm91cDogdW5kZWZpbmVkXG4gICAgbGFiZWw6ICdOb24tTGluZWFyIFJlc2NhbGluZydcbiAgfSBhcyBWaXNDb25maWdCb29sZWFuLFxuICBnYW1tYUNvbnRyYXN0RmFjdG9yOiB7XG4gICAgZGVmYXVsdFZhbHVlOiAxLFxuICAgIC8vIGdyb3VwOiBcImNvbG9yXCJcbiAgICBpc1JhbmdlZDogZmFsc2UsXG4gICAgbGFiZWw6ICdHYW1tYSBDb250cmFzdCcsXG4gI