kepler.gl.geoiq
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
141 lines (112 loc) • 20.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = require("../../common/styled-components");
var _icons = require("../../common/icons");
var _colorSelector = _interopRequireDefault(require("./color-selector"));
var _fieldSelector = _interopRequireDefault(require("../../common/field-selector"));
var _itemSelector = _interopRequireDefault(require("../../common/item-selector/item-selector"));
var _layerConfigGroup = _interopRequireWildcard(require("./layer-config-group"));
var _rangeSlider = _interopRequireDefault(require("../../common/range-slider"));
var _layerFactory = require("../../../layers/layer-factory");
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var TextLabelPanel = exports["default"] = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(TextLabelPanel, _Component);
var _super = _createSuper(TextLabelPanel);
function TextLabelPanel() {
(0, _classCallCheck2["default"])(this, TextLabelPanel);
return _super.apply(this, arguments);
}
(0, _createClass2["default"])(TextLabelPanel, [{
key: "render",
value: function render() {
var _this$props = this.props,
updateLayerTextLabel = _this$props.updateLayerTextLabel,
textLabel = _this$props.textLabel,
fields = _this$props.fields;
var currentFields = textLabel.map(function (tl) {
return tl.field && tl.field.name;
}).filter(function (d) {
return d;
});
return (/*#__PURE__*/_react["default"].createElement(_layerConfigGroup["default"], {
label: 'label',
collapsible: true
}, /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleHeader, null, /*#__PURE__*/_react["default"].createElement(_fieldSelector["default"], {
fields: fields,
value: currentFields,
onSelect: function onSelect(selected) {
return updateLayerTextLabel('all', 'fields', selected);
},
multiSelect: true
})), /*#__PURE__*/_react["default"].createElement(_layerConfigGroup.ConfigGroupCollapsibleContent, null, textLabel.map(function (tl, idx) {
return (/*#__PURE__*/_react["default"].createElement("div", {
key: tl.field ? tl.field.name : 'null'
}, /*#__PURE__*/_react["default"].createElement(_styledComponents.PanelLabel, null, "Label ".concat(idx + 1)), /*#__PURE__*/_react["default"].createElement(_styledComponents.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_fieldSelector["default"], {
fields: fields,
value: tl.field && tl.field.name || 'Select a field',
placeholder: 'empty',
onSelect: function onSelect(v) {
return updateLayerTextLabel(idx, 'field', v);
},
erasable: true
})), /*#__PURE__*/_react["default"].createElement(_styledComponents.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents.PanelLabel, null, "Font size"), /*#__PURE__*/_react["default"].createElement(_rangeSlider["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_TEXT_CONFIGS.fontSize, {
value1: tl.size,
isRange: false,
onChange: function onChange(v) {
return updateLayerTextLabel(idx, 'size', v[1]);
}
}))), /*#__PURE__*/_react["default"].createElement(_styledComponents.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents.PanelLabel, null, "Font color"), /*#__PURE__*/_react["default"].createElement(_colorSelector["default"], {
colorSets: [{
selectedColor: tl.color,
setColor: function setColor(v) {
return updateLayerTextLabel(idx, 'color', v);
}
}]
})), /*#__PURE__*/_react["default"].createElement(_styledComponents.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents.SpaceBetweenFlexbox, null, /*#__PURE__*/_react["default"].createElement(_styledComponents.SBFlexboxItem, null, /*#__PURE__*/_react["default"].createElement(_styledComponents.PanelLabel, null, "Text anchor"), /*#__PURE__*/_react["default"].createElement(_itemSelector["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_TEXT_CONFIGS.textAnchor, {
selectedItems: tl.anchor,
onChange: function onChange(val) {
return updateLayerTextLabel(idx, 'anchor', val);
}
}))), /*#__PURE__*/_react["default"].createElement(_styledComponents.SBFlexboxItem, null, /*#__PURE__*/_react["default"].createElement(_styledComponents.PanelLabel, null, "Alignment"), /*#__PURE__*/_react["default"].createElement(_itemSelector["default"], (0, _extends2["default"])({}, _layerFactory.LAYER_TEXT_CONFIGS.textAlignment, {
selectedItems: tl.alignment,
onChange: function onChange(val) {
return updateLayerTextLabel(idx, 'alignment', val);
}
}))))))
);
}), /*#__PURE__*/_react["default"].createElement(_styledComponents.SidePanelSection, null, /*#__PURE__*/_react["default"].createElement(_styledComponents.Button, {
link: true,
onClick: function onClick(val) {
return updateLayerTextLabel(textLabel.length);
}
}, /*#__PURE__*/_react["default"].createElement(_icons.Add, {
height: "12px"
}), "Add More Label"))))
);
}
}]);
return TextLabelPanel;
}(_react.Component);
(0, _defineProperty2["default"])(TextLabelPanel, "propTypes", {
fields: _propTypes["default"].arrayOf(_propTypes["default"].object),
textLabel: _propTypes["default"].arrayOf(_propTypes["default"].object),
updateLayerTextLabel: _propTypes["default"].func.isRequired
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NpZGUtcGFuZWwvbGF5ZXItcGFuZWwvdGV4dC1sYWJlbC1wYW5lbC5qcyJdLCJuYW1lcyI6WyJUZXh0TGFiZWxQYW5lbCIsInByb3BzIiwidXBkYXRlTGF5ZXJUZXh0TGFiZWwiLCJ0ZXh0TGFiZWwiLCJmaWVsZHMiLCJjdXJyZW50RmllbGRzIiwibWFwIiwidGwiLCJmaWVsZCIsIm5hbWUiLCJmaWx0ZXIiLCJkIiwic2VsZWN0ZWQiLCJpZHgiLCJ2IiwiTEFZRVJfVEVYVF9DT05GSUdTIiwiZm9udFNpemUiLCJzaXplIiwic2VsZWN0ZWRDb2xvciIsImNvbG9yIiwic2V0Q29sb3IiLCJ0ZXh0QW5jaG9yIiwiYW5jaG9yIiwidmFsIiwidGV4dEFsaWdubWVudCIsImFsaWdubWVudCIsImxlbmd0aCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsImFycmF5T2YiLCJvYmplY3QiLCJmdW5jIiwiaXNSZXF1aXJlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFFQTs7QUFPQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFFQTs7Ozs7Ozs7OztJQUVxQkEsYzs7Ozs7Ozs7Ozs7O1dBT25CLGtCQUFTO0FBQ1Asd0JBQWtELEtBQUtDLEtBQXZEO0FBQUEsVUFBT0Msb0JBQVAsZUFBT0Esb0JBQVA7QUFBQSxVQUE2QkMsU0FBN0IsZUFBNkJBLFNBQTdCO0FBQUEsVUFBd0NDLE1BQXhDLGVBQXdDQSxNQUF4QztBQUNBLFVBQU1DLGFBQWEsR0FBR0YsU0FBUyxDQUM1QkcsR0FEbUIsQ0FDZixVQUFBQyxFQUFFO0FBQUEsZUFBSUEsRUFBRSxDQUFDQyxLQUFILElBQVlELEVBQUUsQ0FBQ0MsS0FBSCxDQUFTQyxJQUF6QjtBQUFBLE9BRGEsRUFFbkJDLE1BRm1CLENBRVosVUFBQUMsQ0FBQztBQUFBLGVBQUlBLENBQUo7QUFBQSxPQUZXLENBQXRCO0FBR0EsMkJBQ0UsZ0NBQUMsNEJBQUQ7QUFBa0IsVUFBQSxLQUFLLEVBQUUsT0FBekI7QUFBa0MsVUFBQSxXQUFXO0FBQTdDLHdCQUNFLGdDQUFDLDhDQUFELHFCQUNFLGdDQUFDLHlCQUFEO0FBQ0UsVUFBQSxNQUFNLEVBQUVQLE1BRFY7QUFFRSxVQUFBLEtBQUssRUFBRUMsYUFGVDtBQUdFLFVBQUEsUUFBUSxFQUFFLGtCQUFBTyxRQUFRO0FBQUEsbUJBQ2hCVixvQkFBb0IsQ0FBQyxLQUFELEVBQVEsUUFBUixFQUFrQlUsUUFBbEIsQ0FESjtBQUFBLFdBSHBCO0FBTUUsVUFBQSxXQUFXO0FBTmIsVUFERixDQURGLGVBV0UsZ0NBQUMsK0NBQUQsUUFDR1QsU0FBUyxDQUFDRyxHQUFWLENBQWMsVUFBQ0MsRUFBRCxFQUFLTSxHQUFMO0FBQUEsK0JBQ2I7QUFBSyxjQUFBLEdBQUcsRUFBRU4sRUFBRSxDQUFDQyxLQUFILEdBQVdELEVBQUUsQ0FBQ0MsS0FBSCxDQUFTQyxJQUFwQixHQUEyQjtBQUFyQyw0QkFDRSxnQ0FBQyw0QkFBRCx3QkFBc0JJLEdBQUcsR0FBRyxDQUE1QixFQURGLGVBRUUsZ0NBQUMsa0NBQUQscUJBQ0UsZ0NBQUMseUJBQUQ7QUFDRSxjQUFBLE1BQU0sRUFBRVQsTUFEVjtBQUVFLGNBQUEsS0FBSyxFQUFHRyxFQUFFLENBQUNDLEtBQUgsSUFBWUQsRUFBRSxDQUFDQyxLQUFILENBQVNDLElBQXRCLElBQStCLGdCQUZ4QztBQUdFLGNBQUEsV0FBVyxFQUFFLE9BSGY7QUFJRSxjQUFBLFFBQVEsRUFBRSxrQkFBQUssQ0FBQztBQUFBLHVCQUFJWixvQkFBb0IsQ0FBQ1csR0FBRCxFQUFNLE9BQU4sRUFBZUMsQ0FBZixDQUF4QjtBQUFBLGVBSmI7QUFLRSxjQUFBLFFBQVE7QUFMVixjQURGLENBRkYsZUFXRSxnQ0FBQyxrQ0FBRCxxQkFDRSxnQ0FBQyw0QkFBRCxvQkFERixlQUVFLGdDQUFDLHVCQUFELGdDQUNNQyxpQ0FBbUJDLFFBRHpCO0FBRUUsY0FBQSxNQUFNLEVBQUVULEVBQUUsQ0FBQ1UsSUFGYjtBQUdFLGNBQUEsT0FBTyxFQUFFLEtBSFg7QUFJRSxjQUFBLFFBQVEsRUFBRSxrQkFBQUgsQ0FBQztBQUFBLHVCQUFJWixvQkFBb0IsQ0FBQ1csR0FBRCxFQUFNLE1BQU4sRUFBY0MsQ0FBQyxDQUFDLENBQUQsQ0FBZixDQUF4QjtBQUFBO0FBSmIsZUFGRixDQVhGLGVBb0JFLGdDQUFDLGtDQUFELHFCQUNFLGdDQUFDLDRCQUFELHFCQURGLGVBRUUsZ0NBQUMseUJBQUQ7QUFDRSxjQUFBLFNBQVMsRUFBRSxDQUNUO0FBQ0VJLGdCQUFBQSxhQUFhLEVBQUVYLEVBQUUsQ0FBQ1ksS0FEcEI7QUFFRUMsZ0JBQUFBLFFBQVEsRUFBRSxrQkFBQU4sQ0FBQztBQUFBLHlCQUFJWixvQkFBb0IsQ0FBQ1csR0FBRCxFQUFNLE9BQU4sRUFBZUMsQ0FBZixDQUF4QjtBQUFBO0FBRmIsZUFEUztBQURiLGNBRkYsQ0FwQkYsZUErQkUsZ0NBQUMsa0NBQUQscUJBQ0UsZ0NBQUMscUNBQUQscUJBQ0UsZ0NBQUMsK0JBQUQscUJBQ0UsZ0NBQUMsNEJBQUQsc0JBREYsZUFFRSxnQ0FBQyx3QkFBRCxnQ0FDTUMsaUNBQW1CTSxVQUR6QjtBQUVFLGNBQUEsYUFBYSxFQUFFZCxFQUFFLENBQUNlLE1BRnBCO0FBR0UsY0FBQSxRQUFRLEVBQUUsa0JBQUFDLEdBQUc7QUFBQSx1QkFBSXJCLG9CQUFvQixDQUFDVyxHQUFELEVBQU0sUUFBTixFQUFnQlUsR0FBaEIsQ0FBeEI7QUFBQTtBQUhmLGVBRkYsQ0FERixlQVNFLGdDQUFDLCtCQUFELHFCQUNFLGdDQUFDLDRCQUFELG9CQURGLGVBRUUsZ0NBQUMsd0JBQUQsZ0NBQ01SLGlDQUFtQlMsYUFEekI7QUFFRSxjQUFBLGFBQWEsRUFBRWpCLEVBQUUsQ0FBQ2tCLFNBRnBCO0FBR0UsY0FBQSxRQUFRLEVBQUUsa0JBQUFGLEdBQUc7QUFBQSx1QkFDWHJCLG9CQUFvQixDQUFDVyxHQUFELEVBQU0sV0FBTixFQUFtQlUsR0FBbkIsQ0FEVDtBQUFBO0FBSGYsZUFGRixDQVRGLENBREYsQ0EvQkY7QUFEYTtBQUFBLFNBQWQsQ0FESCxlQXlERSxnQ0FBQyxrQ0FBRCxxQkFDRSxnQ0FBQyx3QkFBRDtBQUNFLFVBQUEsSUFBSSxNQUROO0FBRUUsVUFBQSxPQUFPLEVBQUUsaUJBQUFBLEdBQUc7QUFBQSxtQkFBSXJCLG9CQUFvQixDQUFDQyxTQUFTLENBQUN1QixNQUFYLENBQXhCO0FBQUE7QUFGZCx3QkFJRSxnQ0FBQyxVQUFEO0FBQUssVUFBQSxNQUFNLEVBQUM7QUFBWixVQUpGLG1CQURGLENBekRGLENBWEY7QUFERjtBQWlGRDs7O0VBN0Z5Q0MsZ0I7O2lDQUF2QjNCLGMsZUFDQTtBQUNqQkksRUFBQUEsTUFBTSxFQUFFd0Isc0JBQVVDLE9BQVYsQ0FBa0JELHNCQUFVRSxNQUE1QixDQURTO0FBRWpCM0IsRUFBQUEsU0FBUyxFQUFFeUIsc0JBQVVDLE9BQVYsQ0FBa0JELHNCQUFVRSxNQUE1QixDQUZNO0FBR2pCNUIsRUFBQUEsb0JBQW9CLEVBQUUwQixzQkFBVUcsSUFBVixDQUFlQztBQUhwQixDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIzIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuXG5pbXBvcnQge1xuICBQYW5lbExhYmVsLFxuICBTaWRlUGFuZWxTZWN0aW9uLFxuICBTcGFjZUJldHdlZW5GbGV4Ym94LFxuICBTQkZsZXhib3hJdGVtLFxuICBCdXR0b25cbn0gZnJvbSAnY29tcG9uZW50cy9jb21tb24vc3R5bGVkLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtBZGR9IGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL2ljb25zJztcbmltcG9ydCBDb2xvclNlbGVjdG9yIGZyb20gJy4vY29sb3Itc2VsZWN0b3InO1xuaW1wb3J0IEZpZWxkU2VsZWN0b3IgZnJvbSAnY29tcG9uZW50cy9jb21tb24vZmllbGQtc2VsZWN0b3InO1xuaW1wb3J0IEl0ZW1TZWxlY3RvciBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pdGVtLXNlbGVjdG9yL2l0ZW0tc2VsZWN0b3InO1xuaW1wb3J0IExheWVyQ29uZmlnR3JvdXAsIHtcbiAgQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQsXG4gIENvbmZpZ0dyb3VwQ29sbGFwc2libGVIZWFkZXJcbn0gZnJvbSAnLi9sYXllci1jb25maWctZ3JvdXAnO1xuaW1wb3J0IFJhbmdlU2xpZGVyIGZyb20gJ2NvbXBvbmVudHMvY29tbW9uL3JhbmdlLXNsaWRlcic7XG5cbmltcG9ydCB7TEFZRVJfVEVYVF9DT05GSUdTfSBmcm9tICdsYXllcnMvbGF5ZXItZmFjdG9yeSc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRleHRMYWJlbFBhbmVsIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBmaWVsZHM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vYmplY3QpLFxuICAgIHRleHRMYWJlbDogUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9iamVjdCksXG4gICAgdXBkYXRlTGF5ZXJUZXh0TGFiZWw6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgfTtcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge3VwZGF0ZUxheWVyVGV4dExhYmVsLCB0ZXh0TGFiZWwsIGZpZWxkc30gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IGN1cnJlbnRGaWVsZHMgPSB0ZXh0TGFiZWxcbiAgICAgIC5tYXAodGwgPT4gdGwuZmllbGQgJiYgdGwuZmllbGQubmFtZSlcbiAgICAgIC5maWx0ZXIoZCA9PiBkKTtcbiAgICByZXR1cm4gKFxuICAgICAgPExheWVyQ29uZmlnR3JvdXAgbGFiZWw9eydsYWJlbCd9IGNvbGxhcHNpYmxlPlxuICAgICAgICA8Q29uZmlnR3JvdXBDb2xsYXBzaWJsZUhlYWRlcj5cbiAgICAgICAgICA8RmllbGRTZWxlY3RvclxuICAgICAgICAgICAgZmllbGRzPXtmaWVsZHN9XG4gICAgICAgICAgICB2YWx1ZT17Y3VycmVudEZpZWxkc31cbiAgICAgICAgICAgIG9uU2VsZWN0PXtzZWxlY3RlZCA9PlxuICAgICAgICAgICAgICB1cGRhdGVMYXllclRleHRMYWJlbCgnYWxsJywgJ2ZpZWxkcycsIHNlbGVjdGVkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbXVsdGlTZWxlY3RcbiAgICAgICAgICAvPlxuICAgICAgICA8L0NvbmZpZ0dyb3VwQ29sbGFwc2libGVIZWFkZXI+XG4gICAgICAgIDxDb25maWdHcm91cENvbGxhcHNpYmxlQ29udGVudD5cbiAgICAgICAgICB7dGV4dExhYmVsLm1hcCgodGwsIGlkeCkgPT4gKFxuICAgICAgICAgICAgPGRpdiBrZXk9e3RsLmZpZWxkID8gdGwuZmllbGQubmFtZSA6ICdudWxsJ30+XG4gICAgICAgICAgICAgIDxQYW5lbExhYmVsPntgTGFiZWwgJHtpZHggKyAxfWB9PC9QYW5lbExhYmVsPlxuICAgICAgICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICAgICAgICA8RmllbGRTZWxlY3RvclxuICAgICAgICAgICAgICAgICAgZmllbGRzPXtmaWVsZHN9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17KHRsLmZpZWxkICYmIHRsLmZpZWxkLm5hbWUpIHx8ICdTZWxlY3QgYSBmaWVsZCd9XG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17J2VtcHR5J31cbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt2ID0+IHVwZGF0ZUxheWVyVGV4dExhYmVsKGlkeCwgJ2ZpZWxkJywgdil9XG4gICAgICAgICAgICAgICAgICBlcmFzYWJsZVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICAgICAgPFNpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICAgICAgPFBhbmVsTGFiZWw+e2BGb250IHNpemVgfTwvUGFuZWxMYWJlbD5cbiAgICAgICAgICAgICAgICA8UmFuZ2VTbGlkZXJcbiAgICAgICAgICAgICAgICAgIHsuLi5MQVlFUl9URVhUX0NPTkZJR1MuZm9udFNpemV9XG4gICAgICAgICAgICAgICAgICB2YWx1ZTE9e3RsLnNpemV9XG4gICAgICAgICAgICAgICAgICBpc1JhbmdlPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2ID0+IHVwZGF0ZUxheWVyVGV4dExhYmVsKGlkeCwgJ3NpemUnLCB2WzFdKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgICAgIDxQYW5lbExhYmVsPntgRm9udCBjb2xvcmB9PC9QYW5lbExhYmVsPlxuICAgICAgICAgICAgICAgIDxDb2xvclNlbGVjdG9yXG4gICAgICAgICAgICAgICAgICBjb2xvclNldHM9e1tcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29sb3I6IHRsLmNvbG9yLFxuICAgICAgICAgICAgICAgICAgICAgIHNldENvbG9yOiB2ID0+IHVwZGF0ZUxheWVyVGV4dExhYmVsKGlkeCwgJ2NvbG9yJywgdilcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgXX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICAgIDxTaWRlUGFuZWxTZWN0aW9uPlxuICAgICAgICAgICAgICAgIDxTcGFjZUJldHdlZW5GbGV4Ym94PlxuICAgICAgICAgICAgICAgICAgPFNCRmxleGJveEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbExhYmVsPntgVGV4dCBhbmNob3JgfTwvUGFuZWxMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPEl0ZW1TZWxlY3RvclxuICAgICAgICAgICAgICAgICAgICAgIHsuLi5MQVlFUl9URVhUX0NPTkZJR1MudGV4dEFuY2hvcn1cbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zPXt0bC5hbmNob3J9XG4gICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbCA9PiB1cGRhdGVMYXllclRleHRMYWJlbChpZHgsICdhbmNob3InLCB2YWwpfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9TQkZsZXhib3hJdGVtPlxuICAgICAgICAgICAgICAgICAgPFNCRmxleGJveEl0ZW0+XG4gICAgICAgICAgICAgICAgICAgIDxQYW5lbExhYmVsPntgQWxpZ25tZW50YH08L1BhbmVsTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxJdGVtU2VsZWN0b3JcbiAgICAgICAgICAgICAgICAgICAgICB7Li4uTEFZRVJfVEVYVF9DT05GSUdTLnRleHRBbGlnbm1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcz17dGwuYWxpZ25tZW50fVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWwgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUxheWVyVGV4dExhYmVsKGlkeCwgJ2FsaWdubWVudCcsIHZhbClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L1NCRmxleGJveEl0ZW0+XG4gICAgICAgICAgICAgICAgPC9TcGFjZUJldHdlZW5GbGV4Ym94PlxuICAgICAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApKX1cbiAgICAgICAgICA8U2lkZVBhbmVsU2VjdGlvbj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgbGlua1xuICAgICAgICAgICAgICBvbkNsaWNrPXt2YWwgPT4gdXBkYXRlTGF5ZXJUZXh0TGFiZWwodGV4dExhYmVsLmxlbmd0aCl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxBZGQgaGVpZ2h0PVwiMTJweFwiIC8+XG4gICAgICAgICAgICAgIEFkZCBNb3JlIExhYmVsXG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L1NpZGVQYW5lbFNlY3Rpb24+XG4gICAgICAgIDwvQ29uZmlnR3JvdXBDb2xsYXBzaWJsZUNvbnRlbnQ+XG4gICAgICA8L0xheWVyQ29uZmlnR3JvdXA+XG4gICAgKTtcbiAgfVxufVxuIl19