kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
141 lines (118 loc) • 19 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _dropdownList = require("../../common/item-selector/dropdown-list");
var _widgetItemSelector = _interopRequireDefault(require("../../common/item-selector/widget-item-selector"));
var _defaultSettings = require("../../../constants/default-settings");
var _styledComponents2 = require("../../common/styled-components");
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
var ITEM_SIZE = {
large: 60,
small: 28
};
var StyledDropdownListItem = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding-bottom: 12px;\n padding-right: 12px;\n\n &.selected {\n .layer-type-selector__item__icon {\n border: 1px solid #caf2f4;\n }\n }\n\n :hover,\n &.selected {\n cursor: pointer;\n .layer-type-selector__item__icon {\n color: ", ";\n }\n\n .layer-type-selector__item__label {\n color: ", ";\n }\n }\n"])), function (props) {
return props.theme.activeColor;
}, function (props) {
return props.theme.textColor;
});
var StyledListItem = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n &.list {\n display: flex;\n align-items: center;\n\n .layer-type-selector__item__icon {\n color: ", ";\n background-size: ", "px ", "px;\n margin-right: 12px;\n }\n }\n\n .layer-type-selector__item__icon {\n color: ", ";\n display: flex;\n background-image: url(", ");\n background-size: ", "px ", "px;\n }\n\n .layer-type-selector__item__label {\n text-transform: capitalize;\n font-size: 12px;\n text-align: center;\n color: ", ";\n }\n"])), function (props) {
return props.theme.activeColor;
}, ITEM_SIZE.small, ITEM_SIZE.small, function (props) {
return props.theme.labelColor;
}, "".concat(_defaultSettings.CLOUDFRONT, "/kepler.gl-layer-icon-bg.png"), ITEM_SIZE.large, ITEM_SIZE.large, function (props) {
return props.theme.labelColor;
});
var DropdownListWrapper = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n ", ";\n background-color: ", ";\n border-top: 1px solid ", ";\n display: flex;\n flex-wrap: wrap;\n align-items: flex-start;\n padding: 12px 0 0 12px;\n"])), function (props) {
return props.theme.dropdownList;
}, function (props) {
return props.theme.dropdownListBgd;
}, function (props) {
return props.theme.dropdownListBorderTop;
});
var LayerTypeListItem = function LayerTypeListItem(_ref) {
var value = _ref.value,
isTile = _ref.isTile;
// console.log('inside widgetTypeSelector', value, isTile);
return (/*#__PURE__*/_react["default"].createElement(StyledListItem, {
className: (0, _classnames["default"])('layer-type-selector__item__inner', {
list: !isTile
})
}, /*#__PURE__*/_react["default"].createElement("div", {
className: "layer-type-selector__item__icon"
}, /*#__PURE__*/_react["default"].createElement(value.icon, {
height: "".concat(isTile ? ITEM_SIZE.large : ITEM_SIZE.small, "px")
})), /*#__PURE__*/_react["default"].createElement("div", {
className: "layer-type-selector__item__label"
}, value.label))
);
};
var LayerTypeDropdownList = function LayerTypeDropdownList(props) {
return (/*#__PURE__*/_react["default"].createElement(DropdownListWrapper, {
className: _dropdownList.classList.list
}, props.options.map(function (value, i) {
return (/*#__PURE__*/_react["default"].createElement(StyledDropdownListItem, {
className: (0, _classnames["default"])('layer-type-selector__item', {
selected: props.selectedItems.find(function (it) {
return it.id === value.id;
}),
hover: props.selectionIndex === i
}),
key: "".concat(value.id, "_").concat(i),
onMouseDown: function onMouseDown(e) {
e.preventDefault();
props.onOptionSelected(value, e);
},
onClick: function onClick(e) {
e.preventDefault();
props.onOptionSelected(value, e);
}
}, /*#__PURE__*/_react["default"].createElement(props.customListItemComponent, {
value: value,
isTile: true
}))
);
}))
);
};
var propTypes = {
layer: _propTypes["default"].object.isRequired,
onSelect: _propTypes["default"].func.isRequired
};
var StyledLayerTypeSelector = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n // override item-selector dropdown padding\n .item-selector .item-selector__dropdown {\n padding: 4px 10px 4px 2px;\n }\n"])));
var LayerTypeSelector = function LayerTypeSelector(_ref2) {
var layer = _ref2.layer,
widgetTypeOptions = _ref2.widgetTypeOptions,
onSelect = _ref2.onSelect;
return (/*#__PURE__*/_react["default"].createElement(_styledComponents2.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(StyledLayerTypeSelector, {
className: "layer-config__type"
}, /*#__PURE__*/_react["default"].createElement(_widgetItemSelector["default"], {
selectedItems: widgetTypeOptions.find(function (op) {
return op.id === layer.type;
}),
options: widgetTypeOptions,
multiSelect: false,
placeholder: "Select A Type",
onChange: onSelect,
getOptionValue: function getOptionValue(op) {
return op.id;
},
filterOption: "label",
displayOption: function displayOption(op) {
return op.label;
},
DropDownLineItemRenderComponent: LayerTypeListItem,
DropDownRenderComponent: LayerTypeDropdownList
})))
);
};
LayerTypeSelector.propTypes = propTypes;
var _default = exports["default"] = LayerTypeSelector;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvd2lkZ2V0LXBhbmVsL2xheWVyLXR5cGUtc2VsZWN0b3IuanMiXSwibmFtZXMiOlsiSVRFTV9TSVpFIiwibGFyZ2UiLCJzbWFsbCIsIlN0eWxlZERyb3Bkb3duTGlzdEl0ZW0iLCJzdHlsZWQiLCJkaXYiLCJwcm9wcyIsInRoZW1lIiwiYWN0aXZlQ29sb3IiLCJ0ZXh0Q29sb3IiLCJTdHlsZWRMaXN0SXRlbSIsImxhYmVsQ29sb3IiLCJDTE9VREZST05UIiwiRHJvcGRvd25MaXN0V3JhcHBlciIsImRyb3Bkb3duTGlzdCIsImRyb3Bkb3duTGlzdEJnZCIsImRyb3Bkb3duTGlzdEJvcmRlclRvcCIsIkxheWVyVHlwZUxpc3RJdGVtIiwidmFsdWUiLCJpc1RpbGUiLCJsaXN0IiwibGFiZWwiLCJMYXllclR5cGVEcm9wZG93bkxpc3QiLCJjbGFzc0xpc3QiLCJvcHRpb25zIiwibWFwIiwiaSIsInNlbGVjdGVkIiwic2VsZWN0ZWRJdGVtcyIsImZpbmQiLCJpdCIsImlkIiwiaG92ZXIiLCJzZWxlY3Rpb25JbmRleCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsIm9uT3B0aW9uU2VsZWN0ZWQiLCJwcm9wVHlwZXMiLCJsYXllciIsIlByb3BUeXBlcyIsIm9iamVjdCIsImlzUmVxdWlyZWQiLCJvblNlbGVjdCIsImZ1bmMiLCJTdHlsZWRMYXllclR5cGVTZWxlY3RvciIsIkxheWVyVHlwZVNlbGVjdG9yIiwid2lkZ2V0VHlwZU9wdGlvbnMiLCJvcCIsInR5cGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBb0JBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUVBOzs7O0FBRUEsSUFBTUEsU0FBUyxHQUFHO0FBQ2hCQyxFQUFBQSxLQUFLLEVBQUUsRUFEUztBQUVoQkMsRUFBQUEsS0FBSyxFQUFFO0FBRlMsQ0FBbEI7O0FBS0EsSUFBTUMsc0JBQXNCLEdBQUdDLDZCQUFPQyxH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RUFBRTtBQUFBLGVBQUlBLEVBQUUsQ0FBQ2hCLEVBQVA7QUFBQSxPQU5wQjtBQU9FLE1BQUEsWUFBWSxFQUFDLE9BUGY7QUFRRSxNQUFBLGFBQWEsRUFBRSx1QkFBQWdCLEVBQUU7QUFBQSxlQUFJQSxFQUFFLENBQUMxQixLQUFQO0FBQUEsT0FSbkI7QUFTRSxNQUFBLCtCQUErQixFQUFFSixpQkFUbkM7QUFVRSxNQUFBLHVCQUF1QixFQUFFSztBQVYzQixNQURGLENBREY7QUFEd0I7QUFBQSxDQUExQjs7QUFtQkF1QixpQkFBaUIsQ0FBQ1IsU0FBbEIsR0FBOEJBLFNBQTlCOztvQ0FFZVEsaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMjMgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5cbmltcG9ydCB7Y2xhc3NMaXN0fSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2Ryb3Bkb3duLWxpc3QnO1xuaW1wb3J0IEl0ZW1TZWxlY3RvciBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL3dpZGdldC1pdGVtLXNlbGVjdG9yJztcbmltcG9ydCB7Q0xPVURGUk9OVH0gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5pbXBvcnQge1NpZGVQYW5lbFNlY3Rpb259IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3N0eWxlZC1jb21wb25lbnRzJztcblxuY29uc3QgSVRFTV9TSVpFID0ge1xuICBsYXJnZTogNjAsXG4gIHNtYWxsOiAyOFxufTtcblxuY29uc3QgU3R5bGVkRHJvcGRvd25MaXN0SXRlbSA9IHN0eWxlZC5kaXZgXG4gIHBhZGRpbmctYm90dG9tOiAxMnB4O1xuICBwYWRkaW5nLXJpZ2h0OiAxMnB4O1xuXG4gICYuc2VsZWN0ZWQge1xuICAgIC5sYXllci10eXBlLXNlbGVjdG9yX19pdGVtX19pY29uIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjYWYyZjQ7XG4gICAgfVxuICB9XG5cbiAgOmhvdmVyLFxuICAmLnNlbGVjdGVkIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLmxheWVyLXR5cGUtc2VsZWN0b3JfX2l0ZW1fX2ljb24ge1xuICAgICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYWN0aXZlQ29sb3J9O1xuICAgIH1cblxuICAgIC5sYXllci10eXBlLXNlbGVjdG9yX19pdGVtX19sYWJlbCB7XG4gICAgICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS50ZXh0Q29sb3J9O1xuICAgIH1cbiAgfVxuYDtcblxuY29uc3QgU3R5bGVkTGlzdEl0ZW0gPSBzdHlsZWQuZGl2YFxuICAmLmxpc3Qge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgIC5sYXllci10eXBlLXNlbGVjdG9yX19pdGVtX19pY29uIHtcbiAgICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmFjdGl2ZUNvbG9yfTtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogJHtJVEVNX1NJWkUuc21hbGx9cHggJHtJVEVNX1NJWkUuc21hbGx9cHg7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7XG4gICAgfVxuICB9XG5cbiAgLmxheWVyLXR5cGUtc2VsZWN0b3JfX2l0ZW1fX2ljb24ge1xuICAgIGNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmxhYmVsQ29sb3J9O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCR7YCR7Q0xPVURGUk9OVH0va2VwbGVyLmdsLWxheWVyLWljb24tYmcucG5nYH0pO1xuICAgIGJhY2tncm91bmQtc2l6ZTogJHtJVEVNX1NJWkUubGFyZ2V9cHggJHtJVEVNX1NJWkUubGFyZ2V9cHg7XG4gIH1cblxuICAubGF5ZXItdHlwZS1zZWxlY3Rvcl9faXRlbV9fbGFiZWwge1xuICAgIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubGFiZWxDb2xvcn07XG4gIH1cbmA7XG5cbmNvbnN0IERyb3Bkb3duTGlzdFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICAke3Byb3BzID0+IHByb3BzLnRoZW1lLmRyb3Bkb3duTGlzdH07XG4gIGJhY2tncm91bmQtY29sb3I6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0QmdkfTtcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuZHJvcGRvd25MaXN0Qm9yZGVyVG9wfTtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC13cmFwOiB3cmFwO1xuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgcGFkZGluZzogMTJweCAwIDAgMTJweDtcbmA7XG5cbmNvbnN0IExheWVyVHlwZUxpc3RJdGVtID0gKHt2YWx1ZSwgaXNUaWxlfSkgPT4ge1xuICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIHdpZGdldFR5cGVTZWxlY3RvcicsIHZhbHVlLCBpc1RpbGUpO1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRMaXN0SXRlbVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdsYXllci10eXBlLXNlbGVjdG9yX19pdGVtX19pbm5lcicsIHtcbiAgICAgICAgbGlzdDogIWlzVGlsZVxuICAgICAgfSl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJsYXllci10eXBlLXNlbGVjdG9yX19pdGVtX19pY29uXCI+XG4gICAgICAgIDx2YWx1ZS5pY29uXG4gICAgICAgICAgaGVpZ2h0PXtgJHtpc1RpbGUgPyBJVEVNX1NJWkUubGFyZ2UgOiBJVEVNX1NJWkUuc21hbGx9cHhgfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImxheWVyLXR5cGUtc2VsZWN0b3JfX2l0ZW1fX2xhYmVsXCI+e3ZhbHVlLmxhYmVsfTwvZGl2PlxuICAgIDwvU3R5bGVkTGlzdEl0ZW0+XG4gICk7XG59O1xuXG5jb25zdCBMYXllclR5cGVEcm9wZG93bkxpc3QgPSBwcm9wcyA9PiAoXG4gIDxEcm9wZG93bkxpc3RXcmFwcGVyIGNsYXNzTmFtZT17Y2xhc3NMaXN0Lmxpc3R9PlxuICAgIHtwcm9wcy5vcHRpb25zLm1hcCgodmFsdWUsIGkpID0+IChcbiAgICAgIDxTdHlsZWREcm9wZG93bkxpc3RJdGVtXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcygnbGF5ZXItdHlwZS1zZWxlY3Rvcl9faXRlbScsIHtcbiAgICAgICAgICBzZWxlY3RlZDogcHJvcHMuc2VsZWN0ZWRJdGVtcy5maW5kKGl0ID0+IGl0LmlkID09PSB2YWx1ZS5pZCksXG4gICAgICAgICAgaG92ZXI6IHByb3BzLnNlbGVjdGlvbkluZGV4ID09PSBpXG4gICAgICAgIH0pfVxuICAgICAgICBrZXk9e2Ake3ZhbHVlLmlkfV8ke2l9YH1cbiAgICAgICAgb25Nb3VzZURvd249e2UgPT4ge1xuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBwcm9wcy5vbk9wdGlvblNlbGVjdGVkKHZhbHVlLCBlKTtcbiAgICAgICAgfX1cbiAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHByb3BzLm9uT3B0aW9uU2VsZWN0ZWQodmFsdWUsIGUpO1xuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8cHJvcHMuY3VzdG9tTGlzdEl0ZW1Db21wb25lbnQgdmFsdWU9e3ZhbHVlfSBpc1RpbGUgLz5cbiAgICAgIDwvU3R5bGVkRHJvcGRvd25MaXN0SXRlbT5cbiAgICApKX1cbiAgPC9Ecm9wZG93bkxpc3RXcmFwcGVyPlxuKTtcblxuY29uc3QgcHJvcFR5cGVzID0ge1xuICBsYXllcjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBvblNlbGVjdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgU3R5bGVkTGF5ZXJUeXBlU2VsZWN0b3IgPSBzdHlsZWQuZGl2YFxuICAvLyBvdmVycmlkZSBpdGVtLXNlbGVjdG9yIGRyb3Bkb3duIHBhZGRpbmdcbiAgLml0ZW0tc2VsZWN0b3IgLml0ZW0tc2VsZWN0b3JfX2Ryb3Bkb3duIHtcbiAgICBwYWRkaW5nOiA0cHggMTBweCA0cHggMnB4O1xuICB9XG5gO1xuY29uc3QgTGF5ZXJUeXBlU2VsZWN0b3IgPSAoe2xheWVyLCB3aWRnZXRUeXBlT3B0aW9ucywgb25TZWxlY3R9KSA9PiAoXG4gIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgIDxTdHlsZWRMYXllclR5cGVTZWxlY3RvciBjbGFzc05hbWU9XCJsYXllci1jb25maWdfX3R5cGVcIj5cbiAgICAgIDxJdGVtU2VsZWN0b3JcbiAgICAgICAgc2VsZWN0ZWRJdGVtcz17d2lkZ2V0VHlwZU9wdGlvbnMuZmluZChvcCA9PiBvcC5pZCA9PT0gbGF5ZXIudHlwZSl9XG4gICAgICAgIG9wdGlvbnM9e3dpZGdldFR5cGVPcHRpb25zfVxuICAgICAgICBtdWx0aVNlbGVjdD17ZmFsc2V9XG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0IEEgVHlwZVwiXG4gICAgICAgIG9uQ2hhbmdlPXtvblNlbGVjdH1cbiAgICAgICAgZ2V0T3B0aW9uVmFsdWU9e29wID0+IG9wLmlkfVxuICAgICAgICBmaWx0ZXJPcHRpb249XCJsYWJlbFwiXG4gICAgICAgIGRpc3BsYXlPcHRpb249e29wID0+IG9wLmxhYmVsfVxuICAgICAgICBEcm9wRG93bkxpbmVJdGVtUmVuZGVyQ29tcG9uZW50PXtMYXllclR5cGVMaXN0SXRlbX1cbiAgICAgICAgRHJvcERvd25SZW5kZXJDb21wb25lbnQ9e0xheWVyVHlwZURyb3Bkb3duTGlzdH1cbiAgICAgIC8+XG4gICAgPC9TdHlsZWRMYXllclR5cGVTZWxlY3Rvcj5cbiAgPC9TaWRlUGFuZWxTZWN0aW9uPlxuKTtcblxuTGF5ZXJUeXBlU2VsZWN0b3IucHJvcFR5cGVzID0gcHJvcFR5cGVzO1xuXG5leHBvcnQgZGVmYXVsdCBMYXllclR5cGVTZWxlY3RvcjtcbiJdfQ==