UNPKG

tc-ui-toolkit

Version:

React components used to develop tools for the desktop app translationCore

239 lines (203 loc) 23.5 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; 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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _Dialog = _interopRequireDefault(require("@material-ui/core/Dialog")); var _DialogTitle = _interopRequireDefault(require("@material-ui/core/DialogTitle")); var _styles = require("@material-ui/core/styles"); var _Paper = _interopRequireDefault(require("@material-ui/core/Paper")); var _reactDraggable = _interopRequireDefault(require("react-draggable")); var _DialogActions = _interopRequireDefault(require("@material-ui/core/DialogActions")); 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 { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } function PaperComponent(props) { // component will only be draggable by element with the className in the handle prop return /*#__PURE__*/_react["default"].createElement(_reactDraggable["default"], { handle: ".BaseDialog-draggable-handle" }, /*#__PURE__*/_react["default"].createElement(_Paper["default"], (0, _extends2["default"])({}, props, { elevation: 2 }))); } /** * Generates the dialog actions * @param {bool} actionsEnabled enables/disables the action buttons * @param {*} primaryLabel the title of the primary button * @param {*} secondaryLabel the title of the secondary button * @param {func} onPrimaryClick the click callback of the primary button * @param {func} onSecondaryClick the click callback of the secondary button * @return {*} */ var makeDialogActions = function makeDialogActions(_ref) { var primaryActionEnabled = _ref.primaryActionEnabled, secondaryActionEnabled = _ref.secondaryActionEnabled, primaryLabel = _ref.primaryLabel, secondaryLabel = _ref.secondaryLabel, onPrimaryClick = _ref.onPrimaryClick, onSecondaryClick = _ref.onSecondaryClick; var hasPrimaryLabel = Boolean(primaryLabel); var hasSecondaryLabel = Boolean(secondaryLabel); var hasPrimaryCallback = Boolean(onPrimaryClick); var hasSecondaryCallback = Boolean(onSecondaryClick); var actions = []; var primaryButton = /*#__PURE__*/_react["default"].createElement("button", { className: "btn-prime", disabled: !primaryActionEnabled, onClick: onPrimaryClick }, primaryLabel); var secondaryButton = /*#__PURE__*/_react["default"].createElement("button", { className: "btn-second", disabled: !secondaryActionEnabled, onClick: onSecondaryClick }, secondaryLabel); if (hasSecondaryLabel && hasSecondaryCallback) { actions.push(secondaryButton); } if (hasPrimaryLabel && hasPrimaryCallback) { actions.push(primaryButton); } return actions; }; var styles = { actionRoot: { padding: 0 }, paperRoot: { margin: '0px' } }; /** * Represents a generic dialog. * You could use this to display simple information, * or you could create a new component that wraps this component * with some custom functionality. * * @class * @property {bool} [modal] - controls whether this dialog is modal * @property {Object[]} [actions] - a custom list of actions. This overrides the default secondary and primary actions. * @property {*} [title] - the title of the dialog * @property {*} [secondaryLabel] - the label of the secondary action * @property {*} [primaryLabel] - the label of the primary action * @property {bool} [actionsEnabled] - controls whether the actions are enabled or disabled * @property {bool} [open] - controls whether the dialog is open * @property {func} [onClose] - callback when the secondary button is triggered. Overridden by `actions` * @property {func} [onSubmit] - callback when the primary button is triggered. Overridden by `actions` */ var BaseDialog = /*#__PURE__*/function (_React$Component) { (0, _inherits2["default"])(BaseDialog, _React$Component); var _super = _createSuper(BaseDialog); function BaseDialog() { (0, _classCallCheck2["default"])(this, BaseDialog); return _super.apply(this, arguments); } (0, _createClass2["default"])(BaseDialog, [{ key: "componentDidCatch", value: function componentDidCatch(error, info) { console.error(error); console.warn(info); } }, { key: "render", value: function render() { var _this$props = this.props, key = _this$props.key, primaryActionEnabled = _this$props.primaryActionEnabled, secondaryActionEnabled = _this$props.secondaryActionEnabled, modal = _this$props.modal, title = _this$props.title, bodyStyle = _this$props.bodyStyle, secondaryLabel = _this$props.secondaryLabel, primaryLabel = _this$props.primaryLabel, onClose = _this$props.onClose, onSubmit = _this$props.onSubmit, open = _this$props.open, children = _this$props.children, actions = _this$props.actions, scrollableContent = _this$props.scrollableContent, contentStyle = _this$props.contentStyle, classes = _this$props.classes; var dialogActions = actions ? actions : makeDialogActions({ primaryActionEnabled: primaryActionEnabled, secondaryActionEnabled: secondaryActionEnabled, primaryLabel: primaryLabel, secondaryLabel: secondaryLabel, onPrimaryClick: onSubmit, onSecondaryClick: onClose }); var isModal = dialogActions.length !== 0; if (typeof modal !== 'undefined') { isModal = modal; } return /*#__PURE__*/_react["default"].createElement(_Dialog["default"], { key: key, open: open, modal: isModal, bodyStyle: bodyStyle, contentStyle: contentStyle, autoScrollBodyContent: scrollableContent, onRequestClose: onClose, actions: dialogActions, onClose: onClose, fullWidth: true, PaperComponent: PaperComponent, PaperProps: { className: classes.paperRoot }, "aria-labelledby": "draggable-".concat(title, "-dialog") }, /*#__PURE__*/_react["default"].createElement(_DialogTitle["default"], { disableTypography: true, className: "BaseDialog-draggable-handle", style: { color: 'var(--reverse-color)', backgroundColor: 'var(--accent-color-dark)', padding: '15px', display: 'block', width: '100%', fontSize: 22, fontWeight: 400, cursor: 'move' } }, title), children, /*#__PURE__*/_react["default"].createElement(_DialogActions["default"], { disableSpacing: true }, dialogActions)); } }]); return BaseDialog; }(_react["default"].Component); BaseDialog.propTypes = { modal: _propTypes["default"].bool, actions: _propTypes["default"].array, title: _propTypes["default"].any, key: _propTypes["default"].any, secondaryLabel: _propTypes["default"].any, primaryLabel: _propTypes["default"].any, primaryActionEnabled: _propTypes["default"].bool, secondaryActionEnabled: _propTypes["default"].bool, open: _propTypes["default"].bool, onClose: _propTypes["default"].func, onSubmit: _propTypes["default"].func, scrollableContent: _propTypes["default"].bool, titleStyle: _propTypes["default"].object, children: _propTypes["default"].any, bodyStyle: _propTypes["default"].object, contentStyle: _propTypes["default"].object, classes: _propTypes["default"].object }; BaseDialog.defaultProps = { primaryActionEnabled: true, secondaryActionEnabled: true, titleStyle: {}, modal: false }; var _default = (0, _styles.withStyles)(styles)(BaseDialog); exports["default"] = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9Db21tZW50c0RpYWxvZy9CYXNlRGlhbG9nLmpzIl0sIm5hbWVzIjpbIlBhcGVyQ29tcG9uZW50IiwicHJvcHMiLCJtYWtlRGlhbG9nQWN0aW9ucyIsInByaW1hcnlBY3Rpb25FbmFibGVkIiwic2Vjb25kYXJ5QWN0aW9uRW5hYmxlZCIsInByaW1hcnlMYWJlbCIsInNlY29uZGFyeUxhYmVsIiwib25QcmltYXJ5Q2xpY2siLCJvblNlY29uZGFyeUNsaWNrIiwiaGFzUHJpbWFyeUxhYmVsIiwiQm9vbGVhbiIsImhhc1NlY29uZGFyeUxhYmVsIiwiaGFzUHJpbWFyeUNhbGxiYWNrIiwiaGFzU2Vjb25kYXJ5Q2FsbGJhY2siLCJhY3Rpb25zIiwicHJpbWFyeUJ1dHRvbiIsInNlY29uZGFyeUJ1dHRvbiIsInB1c2giLCJzdHlsZXMiLCJhY3Rpb25Sb290IiwicGFkZGluZyIsInBhcGVyUm9vdCIsIm1hcmdpbiIsIkJhc2VEaWFsb2ciLCJlcnJvciIsImluZm8iLCJjb25zb2xlIiwid2FybiIsImtleSIsIm1vZGFsIiwidGl0bGUiLCJib2R5U3R5bGUiLCJvbkNsb3NlIiwib25TdWJtaXQiLCJvcGVuIiwiY2hpbGRyZW4iLCJzY3JvbGxhYmxlQ29udGVudCIsImNvbnRlbnRTdHlsZSIsImNsYXNzZXMiLCJkaWFsb2dBY3Rpb25zIiwiaXNNb2RhbCIsImxlbmd0aCIsImNsYXNzTmFtZSIsImNvbG9yIiwiYmFja2dyb3VuZENvbG9yIiwiZGlzcGxheSIsIndpZHRoIiwiZm9udFNpemUiLCJmb250V2VpZ2h0IiwiY3Vyc29yIiwiUmVhY3QiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJib29sIiwiYXJyYXkiLCJhbnkiLCJmdW5jIiwidGl0bGVTdHlsZSIsIm9iamVjdCIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FB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QVEsRUFBRWtCLHNCQUFVRyxHQWRDO0FBZXJCekIsRUFBQUEsU0FBUyxFQUFFc0Isc0JBQVVNLE1BZkE7QUFnQnJCdEIsRUFBQUEsWUFBWSxFQUFFZ0Isc0JBQVVNLE1BaEJIO0FBaUJyQnJCLEVBQUFBLE9BQU8sRUFBRWUsc0JBQVVNO0FBakJFLENBQXZCO0FBb0JBcEMsVUFBVSxDQUFDcUMsWUFBWCxHQUEwQjtBQUN4QnpELEVBQUFBLG9CQUFvQixFQUFFLElBREU7QUFFeEJDLEVBQUFBLHNCQUFzQixFQUFFLElBRkE7QUFHeEJzRCxFQUFBQSxVQUFVLEVBQUUsRUFIWTtBQUl4QjdCLEVBQUFBLEtBQUssRUFBRTtBQUppQixDQUExQjs7ZUFPZSx3QkFBV1gsTUFBWCxFQUFtQkssVUFBbkIsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IERpYWxvZyBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9EaWFsb2cnO1xuaW1wb3J0IERpYWxvZ1RpdGxlIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ1RpdGxlJztcbmltcG9ydCB7IHdpdGhTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZS9zdHlsZXMnO1xuaW1wb3J0IFBhcGVyIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL1BhcGVyJztcbmltcG9ydCBEcmFnZ2FibGUgZnJvbSAncmVhY3QtZHJhZ2dhYmxlJztcbmltcG9ydCBEaWFsb2dBY3Rpb25zIGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlL0RpYWxvZ0FjdGlvbnMnO1xuXG5mdW5jdGlvbiBQYXBlckNvbXBvbmVudChwcm9wcykge1xuICAvLyBjb21wb25lbnQgd2lsbCBvbmx5IGJlIGRyYWdnYWJsZSBieSBlbGVtZW50IHdpdGggdGhlIGNsYXNzTmFtZSBpbiB0aGUgaGFuZGxlIHByb3BcbiAgcmV0dXJuIChcbiAgICA8RHJhZ2dhYmxlIGhhbmRsZT1cIi5CYXNlRGlhbG9nLWRyYWdnYWJsZS1oYW5kbGVcIj5cbiAgICAgIDxQYXBlciB7Li4ucHJvcHN9IGVsZXZhdGlvbj17Mn0gLz5cbiAgICA8L0RyYWdnYWJsZT5cbiAgKTtcbn1cblxuLyoqXG4gKiBHZW5lcmF0ZXMgdGhlIGRpYWxvZyBhY3Rpb25zXG4gKiBAcGFyYW0ge2Jvb2x9IGFjdGlvbnNFbmFibGVkIGVuYWJsZXMvZGlzYWJsZXMgdGhlIGFjdGlvbiBidXR0b25zXG4gKiBAcGFyYW0geyp9IHByaW1hcnlMYWJlbCB0aGUgdGl0bGUgb2YgdGhlIHByaW1hcnkgYnV0dG9uXG4gKiBAcGFyYW0geyp9IHNlY29uZGFyeUxhYmVsIHRoZSB0aXRsZSBvZiB0aGUgc2Vjb25kYXJ5IGJ1dHRvblxuICogQHBhcmFtIHtmdW5jfSBvblByaW1hcnlDbGljayB0aGUgY2xpY2sgY2FsbGJhY2sgb2YgdGhlIHByaW1hcnkgYnV0dG9uXG4gKiBAcGFyYW0ge2Z1bmN9IG9uU2Vjb25kYXJ5Q2xpY2sgdGhlIGNsaWNrIGNhbGxiYWNrIG9mIHRoZSBzZWNvbmRhcnkgYnV0dG9uXG4gKiBAcmV0dXJuIHsqfVxuICovXG5jb25zdCBtYWtlRGlhbG9nQWN0aW9ucyA9ICh7XG4gIHByaW1hcnlBY3Rpb25FbmFibGVkLFxuICBzZWNvbmRhcnlBY3Rpb25FbmFibGVkLFxuICBwcmltYXJ5TGFiZWwsXG4gIHNlY29uZGFyeUxhYmVsLFxuICBvblByaW1hcnlDbGljayxcbiAgb25TZWNvbmRhcnlDbGljayxcbn0pID0+IHtcbiAgY29uc3QgaGFzUHJpbWFyeUxhYmVsID0gQm9vbGVhbihwcmltYXJ5TGFiZWwpO1xuICBjb25zdCBoYXNTZWNvbmRhcnlMYWJlbCA9IEJvb2xlYW4oc2Vjb25kYXJ5TGFiZWwpO1xuICBjb25zdCBoYXNQcmltYXJ5Q2FsbGJhY2sgPSBCb29sZWFuKG9uUHJpbWFyeUNsaWNrKTtcbiAgY29uc3QgaGFzU2Vjb25kYXJ5Q2FsbGJhY2sgPSBCb29sZWFuKG9uU2Vjb25kYXJ5Q2xpY2spO1xuICBjb25zdCBhY3Rpb25zID0gW107XG5cbiAgY29uc3QgcHJpbWFyeUJ1dHRvbiA9IChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9XCJidG4tcHJpbWVcIlxuICAgICAgZGlzYWJsZWQ9eyFwcmltYXJ5QWN0aW9uRW5hYmxlZH1cbiAgICAgIG9uQ2xpY2s9e29uUHJpbWFyeUNsaWNrfVxuICAgID5cbiAgICAgIHtwcmltYXJ5TGFiZWx9XG4gICAgPC9idXR0b24+XG4gICk7XG4gIGNvbnN0IHNlY29uZGFyeUJ1dHRvbiA9IChcbiAgICA8YnV0dG9uXG4gICAgICBjbGFzc05hbWU9XCJidG4tc2Vjb25kXCJcbiAgICAgIGRpc2FibGVkPXshc2Vjb25kYXJ5QWN0aW9uRW5hYmxlZH1cbiAgICAgIG9uQ2xpY2s9e29uU2Vjb25kYXJ5Q2xpY2t9XG4gICAgPlxuICAgICAge3NlY29uZGFyeUxhYmVsfVxuICAgIDwvYnV0dG9uPlxuICApO1xuXG4gIGlmIChoYXNTZWNvbmRhcnlMYWJlbCAmJiBoYXNTZWNvbmRhcnlDYWxsYmFjaykge1xuICAgIGFjdGlvbnMucHVzaChzZWNvbmRhcnlCdXR0b24pO1xuICB9XG5cbiAgaWYgKGhhc1ByaW1hcnlMYWJlbCAmJiBoYXNQcmltYXJ5Q2FsbGJhY2spIHtcbiAgICBhY3Rpb25zLnB1c2gocHJpbWFyeUJ1dHRvbik7XG4gIH1cbiAgcmV0dXJuIGFjdGlvbnM7XG59O1xuXG5jb25zdCBzdHlsZXMgPSB7XG4gIGFjdGlvblJvb3Q6IHsgcGFkZGluZzogMCB9LFxuICBwYXBlclJvb3Q6IHsgbWFyZ2luOiAnMHB4JyB9LFxufTtcblxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBnZW5lcmljIGRpYWxvZy5cbiAqIFlvdSBjb3VsZCB1c2UgdGhpcyB0byBkaXNwbGF5IHNpbXBsZSBpbmZvcm1hdGlvbixcbiAqIG9yIHlvdSBjb3VsZCBjcmVhdGUgYSBuZXcgY29tcG9uZW50IHRoYXQgd3JhcHMgdGhpcyBjb21wb25lbnRcbiAqIHdpdGggc29tZSBjdXN0b20gZnVuY3Rpb25hbGl0eS5cbiAqXG4gKiBAY2xhc3NcbiAqIEBwcm9wZXJ0eSB7Ym9vbH0gW21vZGFsXSAtIGNvbnRyb2xzIHdoZXRoZXIgdGhpcyBkaWFsb2cgaXMgbW9kYWxcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0W119IFthY3Rpb25zXSAtIGEgY3VzdG9tIGxpc3Qgb2YgYWN0aW9ucy4gVGhpcyBvdmVycmlkZXMgdGhlIGRlZmF1bHQgc2Vjb25kYXJ5IGFuZCBwcmltYXJ5IGFjdGlvbnMuXG4gKiBAcHJvcGVydHkgeyp9IFt0aXRsZV0gLSB0aGUgdGl0bGUgb2YgdGhlIGRpYWxvZ1xuICogQHByb3BlcnR5IHsqfSBbc2Vjb25kYXJ5TGFiZWxdIC0gdGhlIGxhYmVsIG9mIHRoZSBzZWNvbmRhcnkgYWN0aW9uXG4gKiBAcHJvcGVydHkgeyp9IFtwcmltYXJ5TGFiZWxdIC0gdGhlIGxhYmVsIG9mIHRoZSBwcmltYXJ5IGFjdGlvblxuICogQHByb3BlcnR5IHtib29sfSBbYWN0aW9uc0VuYWJsZWRdIC0gY29udHJvbHMgd2hldGhlciB0aGUgYWN0aW9ucyBhcmUgZW5hYmxlZCBvciBkaXNhYmxlZFxuICogQHByb3BlcnR5IHtib29sfSBbb3Blbl0gLSBjb250cm9scyB3aGV0aGVyIHRoZSBkaWFsb2cgaXMgb3BlblxuICogQHByb3BlcnR5IHtmdW5jfSBbb25DbG9zZV0gLSBjYWxsYmFjayB3aGVuIHRoZSBzZWNvbmRhcnkgYnV0dG9uIGlzIHRyaWdnZXJlZC4gT3ZlcnJpZGRlbiBieSBgYWN0aW9uc2BcbiAqIEBwcm9wZXJ0eSB7ZnVuY30gW29uU3VibWl0XSAtIGNhbGxiYWNrIHdoZW4gdGhlIHByaW1hcnkgYnV0dG9uIGlzIHRyaWdnZXJlZC4gT3ZlcnJpZGRlbiBieSBgYWN0aW9uc2BcbiAqL1xuY2xhc3MgQmFzZURpYWxvZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIGNvbXBvbmVudERpZENhdGNoKGVycm9yLCBpbmZvKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgY29uc29sZS53YXJuKGluZm8pO1xuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIHByaW1hcnlBY3Rpb25FbmFibGVkLFxuICAgICAgc2Vjb25kYXJ5QWN0aW9uRW5hYmxlZCxcbiAgICAgIG1vZGFsLFxuICAgICAgdGl0bGUsXG4gICAgICBib2R5U3R5bGUsXG4gICAgICBzZWNvbmRhcnlMYWJlbCxcbiAgICAgIHByaW1hcnlMYWJlbCxcbiAgICAgIG9uQ2xvc2UsXG4gICAgICBvblN1Ym1pdCxcbiAgICAgIG9wZW4sXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGFjdGlvbnMsXG4gICAgICBzY3JvbGxhYmxlQ29udGVudCxcbiAgICAgIGNvbnRlbnRTdHlsZSxcbiAgICAgIGNsYXNzZXMsXG4gICAgfSA9IHRoaXMucHJvcHM7XG5cbiAgICBsZXQgZGlhbG9nQWN0aW9ucyA9IGFjdGlvbnNcbiAgICAgID8gYWN0aW9uc1xuICAgICAgOiBtYWtlRGlhbG9nQWN0aW9ucyh7XG4gICAgICAgIHByaW1hcnlBY3Rpb25FbmFibGVkLFxuICAgICAgICBzZWNvbmRhcnlBY3Rpb25FbmFibGVkLFxuICAgICAgICBwcmltYXJ5TGFiZWwsXG4gICAgICAgIHNlY29uZGFyeUxhYmVsLFxuICAgICAgICBvblByaW1hcnlDbGljazogb25TdWJtaXQsXG4gICAgICAgIG9uU2Vjb25kYXJ5Q2xpY2s6IG9uQ2xvc2UsXG4gICAgICB9KTtcblxuICAgIGxldCBpc01vZGFsID0gZGlhbG9nQWN0aW9ucy5sZW5ndGggIT09IDA7XG5cbiAgICBpZiAodHlwZW9mIG1vZGFsICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgaXNNb2RhbCA9IG1vZGFsO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8RGlhbG9nXG4gICAgICAgIGtleT17a2V5fVxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBtb2RhbD17aXNNb2RhbH1cbiAgICAgICAgYm9keVN0eWxlPXtib2R5U3R5bGV9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBhdXRvU2Nyb2xsQm9keUNvbnRlbnQ9e3Njcm9sbGFibGVDb250ZW50fVxuICAgICAgICBvblJlcXVlc3RDbG9zZT17b25DbG9zZX1cbiAgICAgICAgYWN0aW9ucz17ZGlhbG9nQWN0aW9uc31cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZnVsbFdpZHRoPXt0cnVlfVxuICAgICAgICBQYXBlckNvbXBvbmVudD17UGFwZXJDb21wb25lbnR9XG4gICAgICAgIFBhcGVyUHJvcHM9e3sgY2xhc3NOYW1lOiBjbGFzc2VzLnBhcGVyUm9vdCB9fVxuICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2BkcmFnZ2FibGUtJHt0aXRsZX0tZGlhbG9nYH1cbiAgICAgID5cbiAgICAgICAgPERpYWxvZ1RpdGxlXG4gICAgICAgICAgZGlzYWJsZVR5cG9ncmFwaHk9e3RydWV9XG4gICAgICAgICAgY2xhc3NOYW1lPVwiQmFzZURpYWxvZy1kcmFnZ2FibGUtaGFuZGxlXCJcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgY29sb3I6ICd2YXIoLS1yZXZlcnNlLWNvbG9yKScsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1hY2NlbnQtY29sb3ItZGFyayknLFxuICAgICAgICAgICAgcGFkZGluZzogJzE1cHgnLFxuICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICAgICAgICBmb250U2l6ZTogMjIsXG4gICAgICAgICAgICBmb250V2VpZ2h0OiA0MDAsXG4gICAgICAgICAgICBjdXJzb3I6ICdtb3ZlJyxcbiAgICAgICAgICB9fT5cbiAgICAgICAgICB7dGl0bGV9XG4gICAgICAgIDwvRGlhbG9nVGl0bGU+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPERpYWxvZ0FjdGlvbnMgZGlzYWJsZVNwYWNpbmc9e3RydWV9PlxuICAgICAgICAgIHtkaWFsb2dBY3Rpb25zfVxuICAgICAgICA8L0RpYWxvZ0FjdGlvbnM+XG4gICAgICA8L0RpYWxvZz5cbiAgICApO1xuICB9XG59XG5cbkJhc2VEaWFsb2cucHJvcFR5cGVzID0ge1xuICBtb2RhbDogUHJvcFR5cGVzLmJvb2wsXG4gIGFjdGlvbnM6IFByb3BUeXBlcy5hcnJheSxcbiAgdGl0bGU6IFByb3BUeXBlcy5hbnksXG4gIGtleTogUHJvcFR5cGVzLmFueSxcbiAgc2Vjb25kYXJ5TGFiZWw6IFByb3BUeXBlcy5hbnksXG4gIHByaW1hcnlMYWJlbDogUHJvcFR5cGVzLmFueSxcbiAgcHJpbWFyeUFjdGlvbkVuYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWNvbmRhcnlBY3Rpb25FbmFibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMsXG4gIHNjcm9sbGFibGVDb250ZW50OiBQcm9wVHlwZXMuYm9vbCxcbiAgdGl0bGVTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5hbnksXG4gIGJvZHlTdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgY29udGVudFN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxufTtcblxuQmFzZURpYWxvZy5kZWZhdWx0UHJvcHMgPSB7XG4gIHByaW1hcnlBY3Rpb25FbmFibGVkOiB0cnVlLFxuICBzZWNvbmRhcnlBY3Rpb25FbmFibGVkOiB0cnVlLFxuICB0aXRsZVN0eWxlOiB7fSxcbiAgbW9kYWw6IGZhbHNlLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgd2l0aFN0eWxlcyhzdHlsZXMpKEJhc2VEaWFsb2cpO1xuIl19