UNPKG

kepler.gl

Version:

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

148 lines (147 loc) 26.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = NotificationItemFactory; 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 _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral")); var _react = _interopRequireWildcard(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _icons = require("../common/icons"); var _markdownToJsx = _interopRequireDefault(require("markdown-to-jsx")); var _constants = require("@kepler.gl/constants"); var _linkRenderer = _interopRequireDefault(require("../common/link-renderer")); var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6; // SPDX-License-Identifier: MIT // Copyright contributors to the kepler.gl project function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2["default"])(o), (0, _possibleConstructorReturn2["default"])(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2["default"])(t).constructor) : o.apply(t, e)); } function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } var NotificationItemContentBlock = _styledComponents["default"].div.attrs({ className: 'notification-item--content-block' })(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n display: block;\n position: relative;\n width: ", "px;\n margin-left: auto;\n"])), function (props) { return props.theme.notificationPanelItemWidth * (1 + Number(props.isExpanded)); }); var NotificationItemContent = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n background-color: ", ";\n color: #fff;\n display: flex;\n flex-direction: row;\n width: ", "px;\n height: ", "px;\n font-size: 11px;\n margin-bottom: 1rem;\n padding: 1em;\n border-radius: 4px;\n box-shadow: ", ";\n cursor: pointer;\n"])), function (props) { return props.theme.notificationColors[props.type] || '#000'; }, function (props) { return props.theme.notificationPanelItemWidth * (1 + Number(props.isExpanded)); }, function (props) { return props.theme.notificationPanelItemHeight * (1 + Number(props.isExpanded)); }, function (props) { return props.theme.boxShadow; }); var DeleteIcon = (0, _styledComponents["default"])(_icons.Delete)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n width: 13px;\n height: 13px;\n"]))); var NotificationCounter = _styledComponents["default"].div.attrs({ className: 'notification-item--counter' })(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n font-size: 11px;\n font-weight: bold;\n text-align: center;\n left: -4px;\n bottom: -4px;\n border-radius: 50%;\n width: 20px;\n height: 20px;\n background-color: #ffffff;\n border: 1px solid ", ";\n color: ", ";\n box-shadow: ", ";\n"])), function (props) { return props.theme.notificationColors[props.type] || '#000'; }, function (props) { return props.theme.notificationColors[props.type] || '#000'; }, function (props) { return props.theme.boxShadow; }); var NotificationMessage = _styledComponents["default"].div.attrs({ className: 'notification-item--message' })(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n flex-grow: 2;\n width: ", "px;\n margin: 0 1em;\n overflow: ", ";\n padding-right: ", ";\n\n p {\n margin-top: 0;\n a {\n color: #fff;\n text-decoration: underline;\n }\n }\n"])), function (props) { return props.theme.notificationPanelItemWidth; }, function (props) { return props.isExpanded ? 'auto' : 'hidden'; }, function (props) { return props.isExpanded ? '1em' : 0; }); var NotificationIcon = _styledComponents["default"].div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n svg {\n vertical-align: text-top;\n }\n"]))); var icons = { info: /*#__PURE__*/_react["default"].createElement(_icons.Info, { "data-testid": _constants.dataTestIds.infoIcon }), warning: /*#__PURE__*/_react["default"].createElement(_icons.Warning, { "data-testid": _constants.dataTestIds.warningIcon }), error: /*#__PURE__*/_react["default"].createElement(_icons.Warning, { "data-testid": _constants.dataTestIds.errorIcon }), success: /*#__PURE__*/_react["default"].createElement(_icons.Checkmark, { "data-testid": _constants.dataTestIds.successIcon }) }; function NotificationItemFactory() { return /*#__PURE__*/function (_Component) { function NotificationItem() { var _this; (0, _classCallCheck2["default"])(this, NotificationItem); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _callSuper(this, NotificationItem, [].concat(args)); (0, _defineProperty2["default"])(_this, "state", { isExpanded: false }); return _this; } (0, _inherits2["default"])(NotificationItem, _Component); return (0, _createClass2["default"])(NotificationItem, [{ key: "componentDidMount", value: function componentDidMount() { if (this.props.isExpanded) { this.setState({ isExpanded: true }); } } }, { key: "render", value: function render() { var _this2 = this; var _this$props = this.props, notification = _this$props.notification, removeNotification = _this$props.removeNotification; var isExpanded = this.state.isExpanded; return /*#__PURE__*/_react["default"].createElement(NotificationItemContentBlock, { isExpanded: isExpanded, theme: this.props.theme }, (notification.count || 0) > 1 ? /*#__PURE__*/_react["default"].createElement(NotificationCounter, { type: notification.type, theme: this.props.theme }, notification.count) : null, /*#__PURE__*/_react["default"].createElement(NotificationItemContent, { className: "notification-item", type: notification.type, isExpanded: isExpanded, onClick: function onClick() { return _this2.setState({ isExpanded: !isExpanded }); } }, /*#__PURE__*/_react["default"].createElement(NotificationIcon, { className: "notification-item--icon" }, icons[notification.type]), /*#__PURE__*/_react["default"].createElement(NotificationMessage, { isExpanded: isExpanded, theme: this.props.theme }, /*#__PURE__*/_react["default"].createElement(_markdownToJsx["default"], { options: { overrides: { a: { component: _linkRenderer["default"] } } } }, notification.message)), typeof removeNotification === 'function' ? /*#__PURE__*/_react["default"].createElement("div", { className: "notification-item--action" }, /*#__PURE__*/_react["default"].createElement(DeleteIcon, { height: "10px", onClick: function onClick() { return removeNotification(notification.id); } })) : null)); } }]); }(_react.Component); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfc3R5bGVkQ29tcG9uZW50cyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfaWNvbnMiLCJfbWFya2Rvd25Ub0pzeCIsIl9jb25zdGFudHMiLCJfbGlua1JlbmRlcmVyIiwiX3RlbXBsYXRlT2JqZWN0IiwiX3RlbXBsYXRlT2JqZWN0MiIsIl90ZW1wbGF0ZU9iamVjdDMiLCJfdGVtcGxhdGVPYmplY3Q0IiwiX3RlbXBsYXRlT2JqZWN0NSIsIl90ZW1wbGF0ZU9iamVjdDYiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJfY2FsbFN1cGVyIiwibyIsIl9nZXRQcm90b3R5cGVPZjIiLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybjIiLCJfaXNOYXRpdmVSZWZsZWN0Q29uc3RydWN0IiwiUmVmbGVjdCIsImNvbnN0cnVjdCIsImNvbnN0cnVjdG9yIiwiYXBwbHkiLCJCb29sZWFuIiwicHJvdG90eXBlIiwidmFsdWVPZiIsIk5vdGlmaWNhdGlvbkl0ZW1Db250ZW50QmxvY2siLCJzdHlsZWQiLCJkaXYiLCJhdHRycyIsImNsYXNzTmFtZSIsIl90YWdnZWRUZW1wbGF0ZUxpdGVyYWwyIiwicHJvcHMiLCJ0aGVtZSIsIm5vdGlmaWNhdGlvblBhbmVsSXRlbVdpZHRoIiwiTnVtYmVyIiwiaXNFeHBhbmRlZCIsIk5vdGlmaWNhdGlvbkl0ZW1Db250ZW50Iiwibm90aWZpY2F0aW9uQ29sb3JzIiwidHlwZSIsIm5vdGlmaWNhdGlvblBhbmVsSXRlbUhlaWdodCIsImJveFNoYWRvdyIsIkRlbGV0ZUljb24iLCJEZWxldGUiLCJOb3RpZmljYXRpb25Db3VudGVyIiwiTm90aWZpY2F0aW9uTWVzc2FnZSIsIk5vdGlmaWNhdGlvbkljb24iLCJpY29ucyIsImluZm8iLCJjcmVhdGVFbGVtZW50IiwiSW5mbyIsImRhdGFUZXN0SWRzIiwiaW5mb0ljb24iLCJ3YXJuaW5nIiwiV2FybmluZyIsIndhcm5pbmdJY29uIiwiZXJyb3IiLCJlcnJvckljb24iLCJzdWNjZXNzIiwiQ2hlY2ttYXJrIiwic3VjY2Vzc0ljb24iLCJOb3RpZmljYXRpb25JdGVtRmFjdG9yeSIsIl9Db21wb25lbnQiLCJOb3RpZmljYXRpb25JdGVtIiwiX3RoaXMiLCJfY2xhc3NDYWxsQ2hlY2syIiwiX2xlbiIsImFyZ3VtZW50cyIsImxlbmd0aCIsImFyZ3MiLCJBcnJheSIsIl9rZXkiLCJjb25jYXQiLCJfZGVmaW5lUHJvcGVydHkyIiwiX2luaGVyaXRzMiIsIl9jcmVhdGVDbGFzczIiLCJrZXkiLCJ2YWx1ZSIsImNvbXBvbmVudERpZE1vdW50Iiwic2V0U3RhdGUiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGhpcyRwcm9wcyIsIm5vdGlmaWNhdGlvbiIsInJlbW92ZU5vdGlmaWNhdGlvbiIsInN0YXRlIiwiY291bnQiLCJvbkNsaWNrIiwib3B0aW9ucyIsIm92ZXJyaWRlcyIsImNvbXBvbmVudCIsIkxpbmtSZW5kZXJlciIsIm1lc3NhZ2UiLCJoZWlnaHQiLCJpZCIsIkNvbXBvbmVudCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub3RpZmljYXRpb24tcGFuZWwvbm90aWZpY2F0aW9uLWl0ZW0udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0RlbGV0ZSwgSW5mbywgV2FybmluZywgQ2hlY2ttYXJrfSBmcm9tICcuLi9jb21tb24vaWNvbnMnO1xuaW1wb3J0IE1hcmtkb3duIGZyb20gJ21hcmtkb3duLXRvLWpzeCc7XG5pbXBvcnQge2RhdGFUZXN0SWRzfSBmcm9tICdAa2VwbGVyLmdsL2NvbnN0YW50cyc7XG5pbXBvcnQge0FjdGlvbkhhbmRsZXIsIHJlbW92ZU5vdGlmaWNhdGlvbiBhcyByZW1vdmVOb3RpZmljYXRpb25BY3Rpb25zfSBmcm9tICdAa2VwbGVyLmdsL2FjdGlvbnMnO1xuXG5pbXBvcnQgTGlua1JlbmRlcmVyIGZyb20gJy4uL2NvbW1vbi9saW5rLXJlbmRlcmVyJztcbmludGVyZmFjZSBOb3RpZmljYXRpb25JdGVtQ29udGVudEJsb2NrUHJvcHMge1xuICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgTm90aWZpY2F0aW9uSXRlbUNvbnRlbnRCbG9jayA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdub3RpZmljYXRpb24taXRlbS0tY29udGVudC1ibG9jaydcbn0pPE5vdGlmaWNhdGlvbkl0ZW1Db250ZW50QmxvY2tQcm9wcz5gXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvblBhbmVsSXRlbVdpZHRoICogKDEgKyBOdW1iZXIocHJvcHMuaXNFeHBhbmRlZCkpfXB4O1xuICBtYXJnaW4tbGVmdDogYXV0bztcbmA7XG5cbmludGVyZmFjZSBOb3RpZmljYXRpb25JdGVtQ29udGVudFByb3BzIHtcbiAgdHlwZTogc3RyaW5nO1xuICBpc0V4cGFuZGVkPzogYm9vbGVhbjtcbn1cblxuY29uc3QgTm90aWZpY2F0aW9uSXRlbUNvbnRlbnQgPSBzdHlsZWQuZGl2PE5vdGlmaWNhdGlvbkl0ZW1Db250ZW50UHJvcHM+YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvbkNvbG9yc1twcm9wcy50eXBlXSB8fCAnIzAwMCd9O1xuICBjb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgd2lkdGg6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubm90aWZpY2F0aW9uUGFuZWxJdGVtV2lkdGggKiAoMSArIE51bWJlcihwcm9wcy5pc0V4cGFuZGVkKSl9cHg7XG4gIGhlaWdodDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ub3RpZmljYXRpb25QYW5lbEl0ZW1IZWlnaHQgKiAoMSArIE51bWJlcihwcm9wcy5pc0V4cGFuZGVkKSl9cHg7XG4gIGZvbnQtc2l6ZTogMTFweDtcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgcGFkZGluZzogMWVtO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaGFkb3c6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUuYm94U2hhZG93fTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuYDtcblxuY29uc3QgRGVsZXRlSWNvbiA9IHN0eWxlZChEZWxldGUpYFxuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHdpZHRoOiAxM3B4O1xuICBoZWlnaHQ6IDEzcHg7XG5gO1xuXG5pbnRlcmZhY2UgTm90aWZpY2F0aW9uQ291bnRlclByb3BzIHtcbiAgdHlwZTogc3RyaW5nO1xufVxuXG5jb25zdCBOb3RpZmljYXRpb25Db3VudGVyID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ25vdGlmaWNhdGlvbi1pdGVtLS1jb3VudGVyJ1xufSk8Tm90aWZpY2F0aW9uQ291bnRlclByb3BzPmBcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBmb250LXNpemU6IDExcHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGxlZnQ6IC00cHg7XG4gIGJvdHRvbTogLTRweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICBib3JkZXI6IDFweCBzb2xpZCAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvbkNvbG9yc1twcm9wcy50eXBlXSB8fCAnIzAwMCd9O1xuICBjb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ub3RpZmljYXRpb25Db2xvcnNbcHJvcHMudHlwZV0gfHwgJyMwMDAnfTtcbiAgYm94LXNoYWRvdzogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ib3hTaGFkb3d9O1xuYDtcblxuaW50ZXJmYWNlIE5vdGlmaWNhdGlvbk1lc3NhZ2VQcm9wcyB7XG4gIGlzRXhwYW5kZWQ/OiBib29sZWFuO1xufVxuXG5jb25zdCBOb3RpZmljYXRpb25NZXNzYWdlID0gc3R5bGVkLmRpdi5hdHRycyh7XG4gIGNsYXNzTmFtZTogJ25vdGlmaWNhdGlvbi1pdGVtLS1tZXNzYWdlJ1xufSk8Tm90aWZpY2F0aW9uTWVzc2FnZVByb3BzPmBcbiAgZmxleC1ncm93OiAyO1xuICB3aWR0aDogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ub3RpZmljYXRpb25QYW5lbEl0ZW1XaWR0aH1weDtcbiAgbWFyZ2luOiAwIDFlbTtcbiAgb3ZlcmZsb3c6ICR7cHJvcHMgPT4gKHByb3BzLmlzRXhwYW5kZWQgPyAnYXV0bycgOiAnaGlkZGVuJyl9O1xuICBwYWRkaW5nLXJpZ2h0OiAke3Byb3BzID0+IChwcm9wcy5pc0V4cGFuZGVkID8gJzFlbScgOiAwKX07XG5cbiAgcCB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBhIHtcbiAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgfVxuICB9XG5gO1xuXG5jb25zdCBOb3RpZmljYXRpb25JY29uID0gc3R5bGVkLmRpdmBcbiAgc3ZnIHtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cbmA7XG5cbmNvbnN0IGljb25zID0ge1xuICBpbmZvOiA8SW5mbyBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMuaW5mb0ljb259IC8+LFxuICB3YXJuaW5nOiA8V2FybmluZyBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZHMud2FybmluZ0ljb259IC8+LFxuICBlcnJvcjogPFdhcm5pbmcgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWRzLmVycm9ySWNvbn0gLz4sXG4gIHN1Y2Nlc3M6IDxDaGVja21hcmsgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWRzLnN1Y2Nlc3NJY29ufSAvPlxufTtcblxuaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkl0ZW1Qcm9wcyB7XG4gIG5vdGlmaWNhdGlvbjoge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IHN0cmluZztcbiAgICBjb3VudD86IG51bWJlcjtcbiAgfTtcbiAgaXNFeHBhbmRlZD86IGJvb2xlYW47XG4gIHJlbW92ZU5vdGlmaWNhdGlvbj86IEFjdGlvbkhhbmRsZXI8dHlwZW9mIHJlbW92ZU5vdGlmaWNhdGlvbkFjdGlvbnM+O1xuICB0aGVtZT86IGFueTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTm90aWZpY2F0aW9uSXRlbUZhY3RvcnkoKSB7XG4gIHJldHVybiBjbGFzcyBOb3RpZmljYXRpb25JdGVtIGV4dGVuZHMgQ29tcG9uZW50PE5vdGlmaWNhdGlvbkl0ZW1Qcm9wcz4ge1xuICAgIHN0YXRlID0ge1xuICAgICAgaXNFeHBhbmRlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICBpZiAodGhpcy5wcm9wcy5pc0V4cGFuZGVkKSB7XG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe2lzRXhwYW5kZWQ6IHRydWV9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB7bm90aWZpY2F0aW9uLCByZW1vdmVOb3RpZmljYXRpb259ID0gdGhpcy5wcm9wcztcbiAgICAgIGNvbnN0IHtpc0V4cGFuZGVkfSA9IHRoaXMuc3RhdGU7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxOb3RpZmljYXRpb25JdGVtQ29udGVudEJsb2NrIGlzRXhwYW5kZWQ9e2lzRXhwYW5kZWR9IHRoZW1lPXt0aGlzLnByb3BzLnRoZW1lfT5cbiAgICAgICAgICB7KG5vdGlmaWNhdGlvbi5jb3VudCB8fCAwKSA+IDEgPyAoXG4gICAgICAgICAgICA8Tm90aWZpY2F0aW9uQ291bnRlciB0eXBlPXtub3RpZmljYXRpb24udHlwZX0gdGhlbWU9e3RoaXMucHJvcHMudGhlbWV9PlxuICAgICAgICAgICAgICB7bm90aWZpY2F0aW9uLmNvdW50fVxuICAgICAgICAgICAgPC9Ob3RpZmljYXRpb25Db3VudGVyPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxOb3RpZmljYXRpb25JdGVtQ29udGVudFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibm90aWZpY2F0aW9uLWl0ZW1cIlxuICAgICAgICAgICAgdHlwZT17bm90aWZpY2F0aW9uLnR5cGV9XG4gICAgICAgICAgICBpc0V4cGFuZGVkPXtpc0V4cGFuZGVkfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gdGhpcy5zZXRTdGF0ZSh7aXNFeHBhbmRlZDogIWlzRXhwYW5kZWR9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Tm90aWZpY2F0aW9uSWNvbiBjbGFzc05hbWU9XCJub3RpZmljYXRpb24taXRlbS0taWNvblwiPlxuICAgICAgICAgICAgICB7aWNvbnNbbm90aWZpY2F0aW9uLnR5cGVdfVxuICAgICAgICAgICAgPC9Ob3RpZmljYXRpb25JY29uPlxuICAgICAgICAgICAgPE5vdGlmaWNhdGlvbk1lc3NhZ2UgaXNFeHBhbmRlZD17aXNFeHBhbmRlZH0gdGhlbWU9e3RoaXMucHJvcHMudGhlbWV9PlxuICAgICAgICAgICAgICA8TWFya2Rvd25cbiAgICAgICAgICAgICAgICBvcHRpb25zPXt7XG4gICAgICAgICAgICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgYToge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogTGlua1JlbmRlcmVyXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge25vdGlmaWNhdGlvbi5tZXNzYWdlfVxuICAgICAgICAgICAgICA8L01hcmtkb3duPlxuICAgICAgICAgICAgPC9Ob3RpZmljYXRpb25NZXNzYWdlPlxuICAgICAgICAgICAge3R5cGVvZiByZW1vdmVOb3RpZmljYXRpb24gPT09ICdmdW5jdGlvbicgPyAoXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibm90aWZpY2F0aW9uLWl0ZW0tLWFjdGlvblwiPlxuICAgICAgICAgICAgICAgIDxEZWxldGVJY29uIGhlaWdodD1cIjEwcHhcIiBvbkNsaWNrPXsoKSA9PiByZW1vdmVOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkKX0gLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8L05vdGlmaWNhdGlvbkl0ZW1Db250ZW50PlxuICAgICAgICA8L05vdGlmaWNhdGlvbkl0ZW1Db250ZW50QmxvY2s+XG4gICAgICApO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsSUFBQUEsTUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGNBQUEsR0FBQUYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUdBLElBQUFNLGFBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUFtRCxJQUFB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