UNPKG

kepler.gl.geoiq

Version:

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

158 lines (131 loc) 18.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.gridVisConfigs = void 0; var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _deck = require("deck.gl"); var _aggregationLayer = _interopRequireDefault(require("../aggregation-layer")); var _enhancedGridLayer = _interopRequireDefault(require("../../deckgl-layers/grid-layer/enhanced-grid-layer")); var _gridUtils = require("./grid-utils"); var _gridLayerIcon = _interopRequireDefault(require("./grid-layer-icon")); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } var gridVisConfigs = { opacity: 'opacity', worldUnitSize: 'worldUnitSize', colorRange: 'colorRange', coverage: 'coverage', sizeRange: 'elevationRange', percentile: 'percentile', elevationPercentile: 'elevationPercentile', elevationScale: 'elevationScale', 'hi-precision': 'hi-precision', colorAggregation: 'aggregation', sizeAggregation: 'sizeAggregation', enable3d: 'enable3d' }; exports.gridVisConfigs = gridVisConfigs; var GridLayer = /*#__PURE__*/ function (_AggregationLayer) { (0, _inherits2["default"])(GridLayer, _AggregationLayer); function GridLayer(props) { var _this; (0, _classCallCheck2["default"])(this, GridLayer); _this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(GridLayer).call(this, props)); _this.registerVisConfig(gridVisConfigs); _this.visConfigSettings.worldUnitSize.label = 'Grid Size (km)'; return _this; } (0, _createClass2["default"])(GridLayer, [{ key: "formatLayerData", value: function formatLayerData(_, allData, filteredIndex, oldLayerData) { var opt = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {}; var formattedData = (0, _get2["default"])((0, _getPrototypeOf2["default"])(GridLayer.prototype), "formatLayerData", this).call(this, _, allData, filteredIndex, oldLayerData, opt); var getPosition = formattedData.getPosition, data = formattedData.data; // TODO: fix this in deck.gl layer var cleaned = data.filter(function (d) { var pos = getPosition(d); return pos.every(Number.isFinite); }); // All data processing is done in deck.gl layer return _objectSpread({}, formattedData, { data: cleaned }); } }, { key: "renderLayer", value: function renderLayer(_ref) { var data = _ref.data, idx = _ref.idx, objectHovered = _ref.objectHovered, mapState = _ref.mapState, interaction = _ref.interaction, layerCallbacks = _ref.layerCallbacks; var zoomFactor = this.getZoomFactor(mapState); var eleZoomFactor = this.getElevationZoomFactor(mapState); var visConfig = this.config.visConfig; var cellSize = visConfig.worldUnitSize * 1000; return [new _enhancedGridLayer["default"](_objectSpread({}, data, { id: this.id, idx: idx, cellSize: cellSize, coverage: visConfig.coverage, // highlight autoHighlight: visConfig.enable3d, // color colorRange: this.getColorRange(visConfig.colorRange), colorScale: this.config.colorScale, opacity: visConfig.opacity, upperPercentile: visConfig.percentile[1], lowerPercentile: visConfig.percentile[0], // elevation extruded: visConfig.enable3d, elevationScale: visConfig.elevationScale * eleZoomFactor, elevationLowerPercentile: visConfig.elevationPercentile[0], elevationUpperPercentile: visConfig.elevationPercentile[1], // parameters parameters: { depthTest: Boolean(visConfig.enable3d || mapState.dragRotate) }, // render fp64: visConfig['hi-precision'], pickable: true, lightSettings: this.meta && this.meta.lightSettings, // callbacks onSetColorDomain: layerCallbacks.onSetLayerDomain }))].concat((0, _toConsumableArray2["default"])(this.isLayerHovered(objectHovered) && !visConfig.enable3d ? [new _deck.GeoJsonLayer({ id: "".concat(this.id, "-hovered"), data: [(0, _gridUtils.pointToPolygonGeo)({ object: objectHovered.object, cellSize: cellSize, coverage: visConfig.coverage, mapState: mapState })], getLineColor: this.config.highlightColor, lineWidthScale: 8 * zoomFactor })] : [])); } }, { key: "type", get: function get() { return 'grid'; } }, { key: "layerIcon", get: function get() { return _gridLayerIcon["default"]; } }]); return GridLayer; }(_aggregationLayer["default"]); exports["default"] = GridLayer; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvZ3JpZC1sYXllci9ncmlkLWxheWVyLmpzIl0sIm5hbWVzIjpbImdyaWRWaXNDb25maWdzIiwib3BhY2l0eSIsIndvcmxkVW5pdFNpemUiLCJjb2xvclJhbmdlIiwiY292ZXJhZ2UiLCJzaXplUmFuZ2UiLCJwZXJjZW50aWxlIiwiZWxldmF0aW9uUGVyY2VudGlsZSIsImVsZXZhdGlvblNjYWxlIiwiY29sb3JBZ2dyZWdhdGlvbiIsInNpemVBZ2dyZWdhdGlvbiIsImVuYWJsZTNkIiwiR3JpZExheWVyIiwicHJvcHMiLCJyZWdpc3RlclZpc0NvbmZpZyIsInZpc0NvbmZpZ1NldHRpbmdzIiwibGFiZWwiLCJfIiwiYWxsRGF0YSIsImZpbHRlcmVkSW5kZXgiLCJvbGRMYXllckRhdGEiLCJvcHQiLCJmb3JtYXR0ZWREYXRhIiwiZ2V0UG9zaXRpb24iLCJkYXRhIiwiY2xlYW5lZCIsImZpbHRlciIsImQiLCJwb3MiLCJldmVyeSIsIk51bWJlciIsImlzRmluaXRlIiwiaWR4Iiwib2JqZWN0SG92ZXJlZCIsIm1hcFN0YXRlIiwiaW50ZXJhY3Rpb24iLCJsYXllckNhbGxiYWNrcyIsInpvb21GYWN0b3IiLCJnZXRab29tRmFjdG9yIiwiZWxlWm9vbUZhY3RvciIsImdldEVsZXZhdGlvblpvb21GYWN0b3IiLCJ2aXNDb25maWciLCJjb25maWciLCJjZWxsU2l6ZSIsIkVuaGFuY2VkR3JpZExheWVyIiwiaWQiLCJhdXRvSGlnaGxpZ2h0IiwiZ2V0Q29sb3JSYW5nZSIsImNvbG9yU2NhbGUiLCJ1cHBlclBlcmNlbnRpbGUiLCJsb3dlclBlcmNlbnRpbGUiLCJleHRydWRlZCIsImVsZXZhdGlvbkxvd2VyUGVyY2VudGlsZSIsImVsZXZhdGlvblVwcGVyUGVyY2VudGlsZSIsInBhcmFtZXRlcnMiLCJkZXB0aFRlc3QiLCJCb29sZWFuIiwiZHJhZ1JvdGF0ZSIsImZwNjQiLCJwaWNrYWJsZSIsImxpZ2h0U2V0dGluZ3MiLCJtZXRhIiwib25TZXRDb2xvckRvbWFpbiIsIm9uU2V0TGF5ZXJEb21haW4iLCJpc0xheWVySG92ZXJlZCIsIkdlb0pzb25MYXllciIsIm9iamVjdCIsImdldExpbmVDb2xvciIsImhpZ2hsaWdodENvbG9yIiwibGluZVdpZHRoU2NhbGUiLCJHcmlkTGF5ZXJJY29uIiwiQWdncmVnYXRpb25MYXllciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7O0FBRU8sSUFBTUEsY0FBYyxHQUFHO0FBQzVCQyxFQUFBQSxPQUFPLEVBQUUsU0FEbUI7QUFFNUJDLEVBQUFBLGFBQWEsRUFBRSxlQUZhO0FBRzVCQyxFQUFBQSxVQUFVLEVBQUUsWUFIZ0I7QUFJNUJDLEVBQUFBLFFBQVEsRUFBRSxVQUprQjtBQUs1QkMsRUFBQUEsU0FBUyxFQUFFLGdCQUxpQjtBQU01QkMsRUFBQUEsVUFBVSxFQUFFLFlBTmdCO0FBTzVCQyxFQUFBQSxtQkFBbUIsRUFBRSxxQkFQTztBQVE1QkMsRUFBQUEsY0FBYyxFQUFFLGdCQVJZO0FBUzVCLGtCQUFnQixjQVRZO0FBVTVCQyxFQUFBQSxnQkFBZ0IsRUFBRSxhQVZVO0FBVzVCQyxFQUFBQSxlQUFlLEVBQUUsaUJBWFc7QUFZNUJDLEVBQUFBLFFBQVEsRUFBRTtBQVprQixDQUF2Qjs7O0lBZWNDLFM7Ozs7O0FBQ25CLHFCQUFZQyxLQUFaLEVBQW1CO0FBQUE7O0FBQUE7QUFDakIscUhBQU1BLEtBQU47O0FBRUEsVUFBS0MsaUJBQUwsQ0FBdUJkLGNBQXZCOztBQUNBLFVBQUtlLGlCQUFMLENBQXVCYixhQUF2QixDQUFxQ2MsS0FBckMsR0FBNkMsZ0JBQTdDO0FBSmlCO0FBS2xCOzs7O29DQVVlQyxDLEVBQUdDLE8sRUFBU0MsYSxFQUFlQyxZLEVBQXdCO0FBQUEsVUFBVkMsR0FBVSx1RUFBSixFQUFJO0FBQ2pFLFVBQU1DLGFBQWEsb0hBQ2pCTCxDQURpQixFQUVqQkMsT0FGaUIsRUFHakJDLGFBSGlCLEVBSWpC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LGFBQXBCLEtBQXNDLENBQUNRLFNBQVMsQ0FBQzlCLFFBQWpELEdBQ0EsQ0FDRSxJQUFJc0Qsa0JBQUosQ0FBaUI7QUFDZnBCLFFBQUFBLEVBQUUsWUFBSyxLQUFLQSxFQUFWLGFBRGE7QUFFZnJCLFFBQUFBLElBQUksRUFBRSxDQUNKLGtDQUFrQjtBQUNoQjBDLFVBQUFBLE1BQU0sRUFBRWpDLGFBQWEsQ0FBQ2lDLE1BRE47QUFFaEJ2QixVQUFBQSxRQUFRLEVBQVJBLFFBRmdCO0FBR2hCdkMsVUFBQUEsUUFBUSxFQUFFcUMsU0FBUyxDQUFDckMsUUFISjtBQUloQjhCLFVBQUFBLFFBQVEsRUFBUkE7QUFKZ0IsU0FBbEIsQ0FESSxDQUZTO0FBVWZpQyxRQUFBQSxZQUFZLEVBQUUsS0FBS3pCLE1BQUwsQ0FBWTBCLGNBVlg7QUFXZkMsUUFBQUEsY0FBYyxFQUFFLElBQUloQztBQVhMLE9BQWpCLENBREYsQ0FEQSxHQWdCQSxFQW5ETjtBQXFERDs7O3dCQWxHVTtBQUNULGFBQU8sTUFBUDtBQUNEOzs7d0JBRWU7QUFDZCxhQUFPaUMseUJBQVA7QUFDRDs7O0VBZG9DQyw0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAxOSBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCB7R2VvSnNvbkxheWVyfSBmcm9tICdkZWNrLmdsJztcbmltcG9ydCBBZ2dyZWdhdGlvbkxheWVyIGZyb20gJy4uL2FnZ3JlZ2F0aW9uLWxheWVyJztcbmltcG9ydCBFbmhhbmNlZEdyaWRMYXllciBmcm9tICdkZWNrZ2wtbGF5ZXJzL2dyaWQtbGF5ZXIvZW5oYW5jZWQtZ3JpZC1sYXllcic7XG5pbXBvcnQge3BvaW50VG9Qb2x5Z29uR2VvfSBmcm9tICcuL2dyaWQtdXRpbHMnO1xuaW1wb3J0IEdyaWRMYXllckljb24gZnJvbSAnLi9ncmlkLWxheWVyLWljb24nO1xuXG5leHBvcnQgY29uc3QgZ3JpZFZpc0NvbmZpZ3MgPSB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgd29ybGRVbml0U2l6ZTogJ3dvcmxkVW5pdFNpemUnLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIGNvdmVyYWdlOiAnY292ZXJhZ2UnLFxuICBzaXplUmFuZ2U6ICdlbGV2YXRpb25SYW5nZScsXG4gIHBlcmNlbnRpbGU6ICdwZXJjZW50aWxlJyxcbiAgZWxldmF0aW9uUGVyY2VudGlsZTogJ2VsZXZhdGlvblBlcmNlbnRpbGUnLFxuICBlbGV2YXRpb25TY2FsZTogJ2VsZXZhdGlvblNjYWxlJyxcbiAgJ2hpLXByZWNpc2lvbic6ICdoaS1wcmVjaXNpb24nLFxuICBjb2xvckFnZ3JlZ2F0aW9uOiAnYWdncmVnYXRpb24nLFxuICBzaXplQWdncmVnYXRpb246ICdzaXplQWdncmVnYXRpb24nLFxuICBlbmFibGUzZDogJ2VuYWJsZTNkJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgR3JpZExheWVyIGV4dGVuZHMgQWdncmVnYXRpb25MYXllciB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuXG4gICAgdGhpcy5yZWdpc3RlclZpc0NvbmZpZyhncmlkVmlzQ29uZmlncyk7XG4gICAgdGhpcy52aXNDb25maWdTZXR0aW5ncy53b3JsZFVuaXRTaXplLmxhYmVsID0gJ0dyaWQgU2l6ZSAoa20pJztcbiAgfVxuXG4gIGdldCB0eXBlKCkge1xuICAgIHJldHVybiAnZ3JpZCc7XG4gIH1cblxuICBnZXQgbGF5ZXJJY29uKCkge1xuICAgIHJldHVybiBHcmlkTGF5ZXJJY29uO1xuICB9XG5cbiAgZm9ybWF0TGF5ZXJEYXRhKF8sIGFsbERhdGEsIGZpbHRlcmVkSW5kZXgsIG9sZExheWVyRGF0YSwgb3B0ID0ge30pIHtcbiAgICBjb25zdCBmb3JtYXR0ZWREYXRhID0gc3VwZXIuZm9ybWF0TGF5ZXJEYXRhKFxuICAgICAgXyxcbiAgICAgIGFsbERhdGEsXG4gICAgICBmaWx0ZXJlZEluZGV4LFxuICAgICAgb2xkTGF5ZXJEYXRhLFxuICAgICAgb3B0XG4gICAgKTtcblxuICAgIGNvbnN0IHtnZXRQb3NpdGlvbiwgZGF0YX0gPSBmb3JtYXR0ZWREYXRhO1xuXG4gICAgLy8gVE9ETzogZml4IHRoaXMgaW4gZGVjay5nbCBsYXllclxuICAgIGNvbnN0IGNsZWFuZWQgPSBkYXRhLmZpbHRlcihkID0+IHtcbiAgICAgIGNvbnN0IHBvcyA9IGdldFBvc2l0aW9uKGQpO1xuICAgICAgcmV0dXJuIHBvcy5ldmVyeShOdW1iZXIuaXNGaW5pdGUpO1xuICAgIH0pO1xuXG4gICAgLy8gQWxsIGRhdGEgcHJvY2Vzc2luZyBpcyBkb25lIGluIGRlY2suZ2wgbGF5ZXJcbiAgICByZXR1cm4ge1xuICAgICAgLi4uZm9ybWF0dGVkRGF0YSxcbiAgICAgIGRhdGE6IGNsZWFuZWRcbiAgICB9O1xuICB9XG5cbiAgcmVuZGVyTGF5ZXIoe1xuICAgIGRhdGEsXG4gICAgaWR4LFxuICAgIG9iamVjdEhvdmVyZWQsXG4gICAgbWFwU3RhdGUsXG4gICAgaW50ZXJhY3Rpb24sXG4gICAgbGF5ZXJDYWxsYmFja3NcbiAgfSkge1xuICAgIGNvbnN0IHpvb21GYWN0b3IgPSB0aGlzLmdldFpvb21GYWN0b3IobWFwU3RhdGUpO1xuICAgIGNvbnN0IGVsZVpvb21GYWN0b3IgPSB0aGlzLmdldEVsZXZhdGlvblpvb21GYWN0b3IobWFwU3RhdGUpO1xuICAgIGNvbnN0IHt2aXNDb25maWd9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3QgY2VsbFNpemUgPSB2aXNDb25maWcud29ybGRVbml0U2l6ZSAqIDEwMDA7XG5cbiAgICByZXR1cm4gW1xuICAgICAgbmV3IEVuaGFuY2VkR3JpZExheWVyKHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgIGlkeCxcbiAgICAgICAgY2VsbFNpemUsXG4gICAgICAgIGNvdmVyYWdlOiB2aXNDb25maWcuY292ZXJhZ2UsXG4gICAgICAgIC8vIGhpZ2hsaWdodFxuICAgICAgICBhdXRvSGlnaGxpZ2h0OiB2aXNDb25maWcuZW5hYmxlM2QsXG5cbiAgICAgICAgLy8gY29sb3JcbiAgICAgICAgY29sb3JSYW5nZTogdGhpcy5nZXRDb2xvclJhbmdlKHZpc0NvbmZpZy5jb2xvclJhbmdlKSxcbiAgICAgICAgY29sb3JTY2FsZTogdGhpcy5jb25maWcuY29sb3JTY2FsZSxcbiAgICAgICAgb3BhY2l0eTogdmlzQ29uZmlnLm9wYWNpdHksXG4gICAgICAgIHVwcGVyUGVyY2VudGlsZTogdmlzQ29uZmlnLnBlcmNlbnRpbGVbMV0sXG4gICAgICAgIGxvd2VyUGVyY2VudGlsZTogdmlzQ29uZmlnLnBlcmNlbnRpbGVbMF0sXG5cbiAgICAgICAgLy8gZWxldmF0aW9uXG4gICAgICAgIGV4dHJ1ZGVkOiB2aXNDb25maWcuZW5hYmxlM2QsXG4gICAgICAgIGVsZXZhdGlvblNjYWxlOiB2aXNDb25maWcuZWxldmF0aW9uU2NhbGUgKiBlbGVab29tRmFjdG9yLFxuICAgICAgICBlbGV2YXRpb25Mb3dlclBlcmNlbnRpbGU6IHZpc0NvbmZpZy5lbGV2YXRpb25QZXJjZW50aWxlWzBdLFxuICAgICAgICBlbGV2YXRpb25VcHBlclBlcmNlbnRpbGU6IHZpc0NvbmZpZy5lbGV2YXRpb25QZXJjZW50aWxlWzFdLFxuICAgICAgICAvLyBwYXJhbWV0ZXJzXG4gICAgICAgIHBhcmFtZXRlcnM6IHtkZXB0aFRlc3Q6IEJvb2xlYW4odmlzQ29uZmlnLmVuYWJsZTNkIHx8IG1hcFN0YXRlLmRyYWdSb3RhdGUpfSxcblxuICAgICAgICAvLyByZW5kZXJcbiAgICAgICAgZnA2NDogdmlzQ29uZmlnWydoaS1wcmVjaXNpb24nXSxcbiAgICAgICAgcGlja2FibGU6IHRydWUsXG4gICAgICAgIGxpZ2h0U2V0dGluZ3M6IHRoaXMubWV0YSAmJiB0aGlzLm1ldGEubGlnaHRTZXR0aW5ncyxcblxuICAgICAgICAvLyBjYWxsYmFja3NcbiAgICAgICAgb25TZXRDb2xvckRvbWFpbjogbGF5ZXJDYWxsYmFja3Mub25TZXRMYXllckRvbWFpblxuICAgICAgfSksXG5cbiAgICAgIC8vIHJlbmRlciBhbiBvdXRsaW5lIG9mIGVhY2ggY2VsbCBpZiBub3QgZXh0cnVkZWRcbiAgICAgIC4uLih0aGlzLmlzTGF5ZXJIb3ZlcmVkKG9iamVjdEhvdmVyZWQpICYmICF2aXNDb25maWcuZW5hYmxlM2RcbiAgICAgICAgPyBbXG4gICAgICAgICAgICBuZXcgR2VvSnNvbkxheWVyKHtcbiAgICAgICAgICAgICAgaWQ6IGAke3RoaXMuaWR9LWhvdmVyZWRgLFxuICAgICAgICAgICAgICBkYXRhOiBbXG4gICAgICAgICAgICAgICAgcG9pbnRUb1BvbHlnb25HZW8oe1xuICAgICAgICAgICAgICAgICAgb2JqZWN0OiBvYmplY3RIb3ZlcmVkLm9iamVjdCxcbiAgICAgICAgICAgICAgICAgIGNlbGxTaXplLFxuICAgICAgICAgICAgICAgICAgY292ZXJhZ2U6IHZpc0NvbmZpZy5jb3ZlcmFnZSxcbiAgICAgICAgICAgICAgICAgIG1hcFN0YXRlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgZ2V0TGluZUNvbG9yOiB0aGlzLmNvbmZpZy5oaWdobGlnaHRDb2xvcixcbiAgICAgICAgICAgICAgbGluZVdpZHRoU2NhbGU6IDggKiB6b29tRmFjdG9yXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF1cbiAgICAgICAgOiBbXSlcbiAgICBdO1xuICB9XG59XG4iXX0=