kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
200 lines (157 loc) • 17.5 kB
JavaScript
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
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 _getPrototypeOf3 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
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 _propTypes = _interopRequireDefault(require("prop-types"));
var _styledComponents = _interopRequireDefault(require("styled-components"));
var _icons = require("../common/icons");
var _reactMarkdown = _interopRequireDefault(require("react-markdown"));
function _templateObject4() {
var data = (0, _taggedTemplateLiteral2["default"])(["\n svg {\n vertical-align: text-top;\n }\n"]);
_templateObject4 = function _templateObject4() {
return data;
};
return data;
}
function _templateObject3() {
var data = (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"]);
_templateObject3 = function _templateObject3() {
return data;
};
return data;
}
function _templateObject2() {
var data = (0, _taggedTemplateLiteral2["default"])(["\n cursor: pointer;\n"]);
_templateObject2 = function _templateObject2() {
return data;
};
return data;
}
function _templateObject() {
var data = (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"]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
var NotificationItemContent = _styledComponents["default"].div(_templateObject(), 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)(_templateObject2());
var NotificationMessage = _styledComponents["default"].div.attrs({
className: 'notification-item--message'
})(_templateObject3(), 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(_templateObject4());
var icons = {
info: _react["default"].createElement(_icons.Info, null),
warning: _react["default"].createElement(_icons.Warning, null),
error: _react["default"].createElement(_icons.Warning, null),
success: _react["default"].createElement(_icons.Checkmark, null)
};
var LinkRenderer = function LinkRenderer(props) {
return _react["default"].createElement("a", {
href: props.href,
target: "_blank",
rel: "noopener noreferrer"
}, props.children);
};
function NotificationItemFactory() {
var _class, _temp;
return _temp = _class =
/*#__PURE__*/
function (_Component) {
(0, _inherits2["default"])(NotificationItem, _Component);
function NotificationItem() {
var _getPrototypeOf2;
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 = (0, _possibleConstructorReturn2["default"])(this, (_getPrototypeOf2 = (0, _getPrototypeOf3["default"])(NotificationItem)).call.apply(_getPrototypeOf2, [this].concat(args)));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "state", {
isExpanded: false
});
return _this;
}
(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 _react["default"].createElement(NotificationItemContent, {
className: "notification-item",
type: notification.type,
isExpanded: isExpanded,
onClick: function onClick() {
return _this2.setState({
isExpanded: !isExpanded
});
}
}, _react["default"].createElement(NotificationIcon, {
className: "notification-item--icon"
}, icons[notification.type]), _react["default"].createElement(NotificationMessage, {
isExpanded: isExpanded,
theme: this.props.theme
}, _react["default"].createElement(_reactMarkdown["default"], {
source: notification.message,
renderers: {
link: LinkRenderer
}
})), typeof removeNotification === 'function' ? _react["default"].createElement("div", {
className: "notification-item--action"
}, _react["default"].createElement(DeleteIcon, {
height: "10px",
onClick: function onClick() {
return removeNotification(notification.id);
}
})) : null);
}
}]);
return NotificationItem;
}(_react.Component), (0, _defineProperty2["default"])(_class, "propTypes", {
notification: _propTypes["default"].shape({
id: _propTypes["default"].string.isRequired,
type: _propTypes["default"].string.isRequired,
message: _propTypes["default"].string.isRequired
}).isRequired,
isExpanded: _propTypes["default"].bool
}), _temp;
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL25vdGlmaWNhdGlvbi1wYW5lbC9ub3RpZmljYXRpb24taXRlbS5qcyJdLCJuYW1lcyI6WyJOb3RpZmljYXRpb25JdGVtQ29udGVudCIsInN0eWxlZCIsImRpdiIsInByb3BzIiwidGhlbWUiLCJub3RpZmljYXRpb25Db2xvcnMiLCJ0eXBlIiwibm90aWZpY2F0aW9uUGFuZWxJdGVtV2lkdGgiLCJOdW1iZXIiLCJpc0V4cGFuZGVkIiwibm90aWZpY2F0aW9uUGFuZWxJdGVtSGVpZ2h0IiwiYm94U2hhZG93IiwiRGVsZXRlSWNvbiIsIkRlbGV0ZSIsIk5vdGlmaWNhdGlvbk1lc3NhZ2UiLCJhdHRycyIsImNsYXNzTmFtZSIsIk5vdGlmaWNhdGlvbkljb24iLCJpY29ucyIsImluZm8iLCJ3YXJuaW5nIiwiZXJyb3IiLCJzdWNjZXNzIiwiTGlua1JlbmRlcmVyIiwiaHJlZiIsImNoaWxkcmVuIiwiTm90aWZpY2F0aW9uSXRlbUZhY3RvcnkiLCJzZXRTdGF0ZSIsIm5vdGlmaWNhdGlvbiIsInJlbW92ZU5vdGlmaWNhdGlvbiIsInN0YXRlIiwibWVzc2FnZSIsImxpbmsiLCJpZCIsIkNvbXBvbmVudCIsIlByb3BUeXBlcyIsInNoYXBlIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsImJvb2wiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsSUFBTUEsdUJBQXVCLEdBQUdDLDZCQUFPQyxHQUFWLG9CQUNQLFVBQUFDLEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUMsa0JBQVosQ0FBK0JGLEtBQUssQ0FBQ0csSUFBckMsS0FBOEMsTUFBbEQ7QUFBQSxDQURFLEVBS2xCLFVBQUFILEtBQUs7QUFBQSxTQUFJQSxLQUFLLENBQUNDLEtBQU4sQ0FBWUcs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QUFBcUIsVUFBQSxVQUFVLEVBQUVHLFVBQWpDO0FBQTZDLFVBQUEsS0FBSyxFQUFFLEtBQUtOLEtBQUwsQ0FBV0M7QUFBL0QsV0FDRSxnQ0FBQyx5QkFBRDtBQUFlLFVBQUEsTUFBTSxFQUFFd0IsWUFBWSxDQUFDRyxPQUFwQztBQUE2QyxVQUFBLFNBQVMsRUFBRTtBQUFDQyxZQUFBQSxJQUFJLEVBQUVUO0FBQVA7QUFBeEQsVUFERixDQVRGLEVBWUcsT0FBT00sa0JBQVAsS0FBOEIsVUFBOUIsR0FDQztBQUFLLFVBQUEsU0FBUyxFQUFDO0FBQWYsV0FDRSxnQ0FBQyxVQUFEO0FBQVksVUFBQSxNQUFNLEVBQUMsTUFBbkI7QUFBMEIsVUFBQSxPQUFPLEVBQUU7QUFBQSxtQkFBTUEsa0JBQWtCLENBQUNELFlBQVksQ0FBQ0ssRUFBZCxDQUF4QjtBQUFBO0FBQW5DLFVBREYsQ0FERCxHQUlHLElBaEJOLENBREY7QUFvQkQ7QUE1Q0g7QUFBQTtBQUFBLElBQXNDQyxnQkFBdEMseURBQ3FCO0FBQ2pCTixJQUFBQSxZQUFZLEVBQUVPLHNCQUFVQyxLQUFWLENBQWdCO0FBQzVCSCxNQUFBQSxFQUFFLEVBQUVFLHNCQUFVRSxNQUFWLENBQWlCQyxVQURPO0FBRTVCaEMsTUFBQUEsSUFBSSxFQUFFNkIsc0JBQVVFLE1BQVYsQ0FBaUJDLFVBRks7QUFHNUJQLE1BQUFBLE9BQU8sRUFBRUksc0JBQVVFLE1BQVYsQ0FBaUJDO0FBSEUsS0FBaEIsRUFJWEEsVUFMYztBQU1qQjdCLElBQUFBLFVBQVUsRUFBRTBCLHNCQUFVSTtBQU5MLEdBRHJCO0FBOENEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IChjKSAyMDIwIFViZXIgVGVjaG5vbG9naWVzLCBJbmMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cyc7XG5pbXBvcnQge0RlbGV0ZSwgSW5mbywgV2FybmluZywgQ2hlY2ttYXJrfSBmcm9tICdjb21wb25lbnRzL2NvbW1vbi9pY29ucyc7XG5pbXBvcnQgUmVhY3RNYXJrZG93biBmcm9tICdyZWFjdC1tYXJrZG93bic7XG5cbmNvbnN0IE5vdGlmaWNhdGlvbkl0ZW1Db250ZW50ID0gc3R5bGVkLmRpdmBcbiAgYmFja2dyb3VuZC1jb2xvcjogJHtwcm9wcyA9PiBwcm9wcy50aGVtZS5ub3RpZmljYXRpb25Db2xvcnNbcHJvcHMudHlwZV0gfHwgJyMwMDAnfTtcbiAgY29sb3I6ICNmZmY7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvblBhbmVsSXRlbVdpZHRoICogKDEgKyBOdW1iZXIocHJvcHMuaXNFeHBhbmRlZCkpfXB4O1xuICBoZWlnaHQ6ICR7cHJvcHMgPT4gcHJvcHMudGhlbWUubm90aWZpY2F0aW9uUGFuZWxJdGVtSGVpZ2h0ICogKDEgKyBOdW1iZXIocHJvcHMuaXNFeHBhbmRlZCkpfXB4O1xuICBmb250LXNpemU6IDExcHg7XG4gIG1hcmdpbi1ib3R0b206IDFyZW07XG4gIHBhZGRpbmc6IDFlbTtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3gtc2hhZG93OiAke3Byb3BzID0+IHByb3BzLnRoZW1lLmJveFNoYWRvd307XG4gIGN1cnNvcjogcG9pbnRlcjtcbmA7XG5cbmNvbnN0IERlbGV0ZUljb24gPSBzdHlsZWQoRGVsZXRlKWBcbiAgY3Vyc29yOiBwb2ludGVyO1xuYDtcblxuY29uc3QgTm90aWZpY2F0aW9uTWVzc2FnZSA9IHN0eWxlZC5kaXYuYXR0cnMoe1xuICBjbGFzc05hbWU6ICdub3RpZmljYXRpb24taXRlbS0tbWVzc2FnZSdcbn0pYFxuICBmbGV4LWdyb3c6IDI7XG4gIHdpZHRoOiAke3Byb3BzID0+IHByb3BzLnRoZW1lLm5vdGlmaWNhdGlvblBhbmVsSXRlbVdpZHRofXB4O1xuICBtYXJnaW46IDAgMWVtO1xuICBvdmVyZmxvdzogJHtwcm9wcyA9PiAocHJvcHMuaXNFeHBhbmRlZCA/ICdhdXRvJyA6ICdoaWRkZW4nKX07XG4gIHBhZGRpbmctcmlnaHQ6ICR7cHJvcHMgPT4gKHByb3BzLmlzRXhwYW5kZWQgPyAnMWVtJyA6IDApfTtcblxuICBwIHtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIGEge1xuICAgICAgY29sb3I6ICNmZmY7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICB9XG4gIH1cbmA7XG5cbmNvbnN0IE5vdGlmaWNhdGlvbkljb24gPSBzdHlsZWQuZGl2YFxuICBzdmcge1xuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgfVxuYDtcblxuY29uc3QgaWNvbnMgPSB7XG4gIGluZm86IDxJbmZvIC8+LFxuICB3YXJuaW5nOiA8V2FybmluZyAvPixcbiAgZXJyb3I6IDxXYXJuaW5nIC8+LFxuICBzdWNjZXNzOiA8Q2hlY2ttYXJrIC8+XG59O1xuXG5jb25zdCBMaW5rUmVuZGVyZXIgPSBwcm9wcyA9PiB7XG4gIHJldHVybiAoXG4gICAgPGEgaHJlZj17cHJvcHMuaHJlZn0gdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvYT5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE5vdGlmaWNhdGlvbkl0ZW1GYWN0b3J5KCkge1xuICByZXR1cm4gY2xhc3MgTm90aWZpY2F0aW9uSXRlbSBleHRlbmRzIENvbXBvbmVudCB7XG4gICAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICAgIG5vdGlmaWNhdGlvbjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgdHlwZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICBtZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbiAgICAgIH0pLmlzUmVxdWlyZWQsXG4gICAgICBpc0V4cGFuZGVkOiBQcm9wVHlwZXMuYm9vbFxuICAgIH07XG5cbiAgICBzdGF0ZSA9IHtcbiAgICAgIGlzRXhwYW5kZWQ6IGZhbHNlXG4gICAgfTtcblxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucHJvcHMuaXNFeHBhbmRlZCkge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtpc0V4cGFuZGVkOiB0cnVlfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3Qge25vdGlmaWNhdGlvbiwgcmVtb3ZlTm90aWZpY2F0aW9ufSA9IHRoaXMucHJvcHM7XG4gICAgICBjb25zdCB7aXNFeHBhbmRlZH0gPSB0aGlzLnN0YXRlO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Tm90aWZpY2F0aW9uSXRlbUNvbnRlbnRcbiAgICAgICAgICBjbGFzc05hbWU9XCJub3RpZmljYXRpb24taXRlbVwiXG4gICAgICAgICAgdHlwZT17bm90aWZpY2F0aW9uLnR5cGV9XG4gICAgICAgICAgaXNFeHBhbmRlZD17aXNFeHBhbmRlZH1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB0aGlzLnNldFN0YXRlKHtpc0V4cGFuZGVkOiAhaXNFeHBhbmRlZH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPE5vdGlmaWNhdGlvbkljb24gY2xhc3NOYW1lPVwibm90aWZpY2F0aW9uLWl0ZW0tLWljb25cIj5cbiAgICAgICAgICAgIHtpY29uc1tub3RpZmljYXRpb24udHlwZV19XG4gICAgICAgICAgPC9Ob3RpZmljYXRpb25JY29uPlxuICAgICAgICAgIDxOb3RpZmljYXRpb25NZXNzYWdlIGlzRXhwYW5kZWQ9e2lzRXhwYW5kZWR9IHRoZW1lPXt0aGlzLnByb3BzLnRoZW1lfT5cbiAgICAgICAgICAgIDxSZWFjdE1hcmtkb3duIHNvdXJjZT17bm90aWZpY2F0aW9uLm1lc3NhZ2V9IHJlbmRlcmVycz17e2xpbms6IExpbmtSZW5kZXJlcn19IC8+XG4gICAgICAgICAgPC9Ob3RpZmljYXRpb25NZXNzYWdlPlxuICAgICAgICAgIHt0eXBlb2YgcmVtb3ZlTm90aWZpY2F0aW9uID09PSAnZnVuY3Rpb24nID8gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJub3RpZmljYXRpb24taXRlbS0tYWN0aW9uXCI+XG4gICAgICAgICAgICAgIDxEZWxldGVJY29uIGhlaWdodD1cIjEwcHhcIiBvbkNsaWNrPXsoKSA9PiByZW1vdmVOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLmlkKX0gLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICA8L05vdGlmaWNhdGlvbkl0ZW1Db250ZW50PlxuICAgICAgKTtcbiAgICB9XG4gIH07XG59XG4iXX0=
;