UNPKG

botframework-webchat-component

Version:
137 lines (134 loc) 25.4 kB
"use strict"; function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _botframeworkWebchatApi = require("botframework-webchat-api"); var _classnames = _interopRequireDefault(require("classnames")); var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireWildcard(require("react")); var _isZeroOrPositive = _interopRequireDefault(require("../Utils/isZeroOrPositive")); var _useStyleSet3 = _interopRequireDefault(require("../hooks/useStyleSet")); var _useStyleToEmotionObject = _interopRequireDefault(require("../hooks/internal/useStyleToEmotionObject")); 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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /* eslint no-magic-numbers: ["error", { "ignore": [-1, 0, 1, 2, 10] }] */ var useDirection = _botframeworkWebchatApi.hooks.useDirection, useStyleOptions = _botframeworkWebchatApi.hooks.useStyleOptions; var ROOT_STYLE = { '&.webchat__bubble': { display: 'flex', position: 'relative', '& .webchat__bubble__nub-pad': { flexShrink: 0 }, '& .webchat__bubble__content': { flexGrow: 1, // This is for hiding content outside of the bubble, for example, content outside of border radius overflow: 'hidden' } } }; function acuteNubSVG(nubSize, strokeWidth, side) { var upSideDown = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false; if (typeof nubSize !== 'number') { return false; } var halfNubSize = nubSize / 2; var halfStrokeWidth = strokeWidth / 2; // Horizontally mirror the nub if it is from user var horizontalTransform = side === 'bot' ? '' : "translate(".concat(halfNubSize, " 0) scale(-1 1) translate(").concat(-halfNubSize, " 0)"); // Vertically mirror the nub if it is up-side-down var verticalTransform = upSideDown ? "translate(0 ".concat(halfNubSize, ") scale(1 -1) translate(0 ").concat(-halfNubSize, ")") : ''; var p1 = [nubSize, halfStrokeWidth].join(' '); var p2 = [strokeWidth, halfStrokeWidth].join(' '); var p3 = [nubSize + strokeWidth, nubSize + halfStrokeWidth].join(' '); return /*#__PURE__*/_react.default.createElement("svg", { className: "webchat__bubble__nub", version: "1.1", viewBox: "0 0 ".concat(nubSize, " ").concat(nubSize), xmlns: "http://www.w3.org/2000/svg" }, /*#__PURE__*/_react.default.createElement("g", { transform: "".concat(horizontalTransform, " ").concat(verticalTransform) }, /*#__PURE__*/_react.default.createElement("path", { className: "webchat__bubble__nub-outline", d: "M".concat(p1, " L").concat(p2, " L").concat(p3) }))); } var Bubble = function Bubble(_ref) { var ariaHidden = _ref['aria-hidden'], children = _ref.children, className = _ref.className, fromUser = _ref.fromUser, nub = _ref.nub; var _useStyleSet = (0, _useStyleSet3.default)(), _useStyleSet2 = _slicedToArray(_useStyleSet, 1), bubbleStyleSet = _useStyleSet2[0].bubble; var _useDirection = useDirection(), _useDirection2 = _slicedToArray(_useDirection, 1), direction = _useDirection2[0]; var _useStyleOptions = useStyleOptions(), _useStyleOptions2 = _slicedToArray(_useStyleOptions, 1), _useStyleOptions2$ = _useStyleOptions2[0], bubbleBorderWidth = _useStyleOptions2$.bubbleBorderWidth, bubbleFromUserBorderWidth = _useStyleOptions2$.bubbleFromUserBorderWidth, bubbleFromUserNubSize = _useStyleOptions2$.bubbleFromUserNubSize, bubbleNubSize = _useStyleOptions2$.bubbleNubSize, bubbleNubOffset = _useStyleOptions2$.bubbleNubOffset, bubbleFromUserNubOffset = _useStyleOptions2$.bubbleFromUserNubOffset; var rootClassName = (0, _useStyleToEmotionObject.default)()(ROOT_STYLE) + ''; var _ref2 = fromUser ? { borderWidth: bubbleFromUserBorderWidth, nubOffset: bubbleFromUserNubOffset, nubSize: bubbleFromUserNubSize, side: 'user' } : { borderWidth: bubbleBorderWidth, nubOffset: bubbleNubOffset, nubSize: bubbleNubSize, side: 'bot' }, borderWidth = _ref2.borderWidth, nubOffset = _ref2.nubOffset, nubSize = _ref2.nubSize, side = _ref2.side; return /*#__PURE__*/_react.default.createElement("div", { "aria-hidden": ariaHidden, className: (0, _classnames.default)('webchat__bubble', { 'webchat__bubble--from-user': fromUser, 'webchat__bubble--hide-nub': nub !== true && nub !== false, 'webchat__bubble--nub-on-top': (0, _isZeroOrPositive.default)(nubOffset), 'webchat__bubble--rtl': direction === 'rtl', 'webchat__bubble--show-nub': nub === true }, rootClassName, bubbleStyleSet + '', (className || '') + '') }, /*#__PURE__*/_react.default.createElement("div", { className: "webchat__bubble__nub-pad" }), /*#__PURE__*/_react.default.createElement("div", { className: "webchat__bubble__content" }, children), nub === true && acuteNubSVG(nubSize, borderWidth, side, !(0, _isZeroOrPositive.default)(nubOffset))); }; Bubble.defaultProps = { 'aria-hidden': undefined, children: undefined, className: '', fromUser: false, nub: false }; Bubble.propTypes = { 'aria-hidden': _propTypes.default.bool, children: _propTypes.default.any, className: _propTypes.default.string, fromUser: _propTypes.default.bool, nub: _propTypes.default.oneOf([true, false, 'hidden']) }; Bubble.displayName = 'Bubble'; var _default = /*#__PURE__*/(0, _react.memo)(Bubble); exports.default = _default; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYm90ZnJhbWV3b3JrV2ViY2hhdEFwaSIsInJlcXVpcmUiLCJfY2xhc3NuYW1lcyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfcHJvcFR5cGVzIiwiX3JlYWN0IiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfaXNaZXJvT3JQb3NpdGl2ZSIsIl91c2VTdHlsZVNldDMiLCJfdXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiaSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVJlc3QiLCJUeXBlRXJyb3IiLCJvIiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJuIiwidG9TdHJpbmciLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJsZW4iLCJsZW5ndGgiLCJhcnIyIiwiX2kiLCJTeW1ib2wiLCJpdGVyYXRvciIsIl9hcnIiLCJfbiIsIl9kIiwiX3MiLCJfZSIsIm5leHQiLCJkb25lIiwicHVzaCIsInZhbHVlIiwiZXJyIiwiaXNBcnJheSIsInVzZURpcmVjdGlvbiIsImhvb2tzIiwidXNlU3R5bGVPcHRpb25zIiwiUk9PVF9TVFlMRSIsImRpc3BsYXkiLCJwb3NpdGlvbiIsImZsZXhTaHJpbmsiLCJmbGV4R3JvdyIsIm92ZXJmbG93IiwiYWN1dGVOdWJTVkciLCJudWJTaXplIiwic3Ryb2tlV2lkdGgiLCJzaWRlIiwidXBTaWRlRG93biIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImhhbGZOdWJTaXplIiwiaGFsZlN0cm9rZVdpZHRoIiwiaG9yaXpvbnRhbFRyYW5zZm9ybSIsImNvbmNhdCIsInZlcnRpY2FsVHJhbnNmb3JtIiwicDEiLCJqb2luIiwicDIiLCJwMyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJ2ZXJzaW9uIiwidmlld0JveCIsInhtbG5zIiwidHJhbnNmb3JtIiwiZCIsIkJ1YmJsZSIsIl9yZWYiLCJhcmlhSGlkZGVuIiwiY2hpbGRyZW4iLCJmcm9tVXNlciIsIm51YiIsIl91c2VTdHlsZVNldCIsInVzZVN0eWxlU2V0IiwiX3VzZVN0eWxlU2V0MiIsImJ1YmJsZVN0eWxlU2V0IiwiYnViYmxlIiwiX3VzZURpcmVjdGlvbiIsIl91c2VEaXJlY3Rpb24yIiwiZGlyZWN0aW9uIiwiX3VzZVN0eWxlT3B0aW9ucyIsIl91c2VTdHlsZU9wdGlvbnMyIiwiX3VzZVN0eWxlT3B0aW9uczIkIiwiYnViYmxlQm9yZGVyV2lkdGgiLCJidWJibGVGcm9tVXNlckJvcmRlcldpZHRoIiwiYnViYmxlRnJvbVVzZXJOdWJTaXplIiwiYnViYmxlTnViU2l6ZSIsImJ1YmJsZU51Yk9mZnNldCIsImJ1YmJsZUZyb21Vc2VyTnViT2Zmc2V0Iiwicm9vdENsYXNzTmFtZSIsInVzZVN0eWxlVG9FbW90aW9uT2JqZWN0IiwiX3JlZjIiLCJib3JkZXJXaWR0aCIsIm51Yk9mZnNldCIsImNsYXNzTmFtZXMiLCJpc1plcm9PclBvc2l0aXZlIiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwiYm9vbCIsImFueSIsInN0cmluZyIsIm9uZU9mIiwiZGlzcGxheU5hbWUiLCJfZGVmYXVsdCIsIm1lbW8iLCJleHBvcnRzIl0sInNvdXJjZVJvb3QiOiJjb21wb25lbnQ6Ly8vIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQWN0aXZpdHkvQnViYmxlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tbWFnaWMtbnVtYmVyczogW1wiZXJyb3JcIiwgeyBcImlnbm9yZVwiOiBbLTEsIDAsIDEsIDIsIDEwXSB9XSAqL1xuXG5pbXBvcnQgeyBob29rcyB9IGZyb20gJ2JvdGZyYW1ld29yay13ZWJjaGF0LWFwaSc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgUmVhY3QsIHsgRkMsIFJlYWN0Tm9kZSwgbWVtbyB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IGlzWmVyb09yUG9zaXRpdmUgZnJvbSAnLi4vVXRpbHMvaXNaZXJvT3JQb3NpdGl2ZSc7XG5pbXBvcnQgdXNlU3R5bGVTZXQgZnJvbSAnLi4vaG9va3MvdXNlU3R5bGVTZXQnO1xuaW1wb3J0IHVzZVN0eWxlVG9FbW90aW9uT2JqZWN0IGZyb20gJy4uL2hvb2tzL2ludGVybmFsL3VzZVN0eWxlVG9FbW90aW9uT2JqZWN0JztcblxuY29uc3QgeyB1c2VEaXJlY3Rpb24sIHVzZVN0eWxlT3B0aW9ucyB9ID0gaG9va3M7XG5cbmNvbnN0IFJPT1RfU1RZTEUgPSB7XG4gICcmLndlYmNoYXRfX2J1YmJsZSc6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG5cbiAgICAnJiAud2ViY2hhdF9fYnViYmxlX19udWItcGFkJzoge1xuICAgICAgZmxleFNocmluazogMFxuICAgIH0sXG5cbiAgICAnJiAud2ViY2hhdF9fYnViYmxlX19jb250ZW50Jzoge1xuICAgICAgZmxleEdyb3c6IDEsXG5cbiAgICAgIC8vIFRoaXMgaXMgZm9yIGhpZGluZyBjb250ZW50IG91dHNpZGUgb2YgdGhlIGJ1YmJsZSwgZm9yIGV4YW1wbGUsIGNvbnRlbnQgb3V0c2lkZSBvZiBib3JkZXIgcmFkaXVzXG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbidcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIGFjdXRlTnViU1ZHKG51YlNpemUsIHN0cm9rZVdpZHRoLCBzaWRlLCB1cFNpZGVEb3duID0gZmFsc2UpIHtcbiAgaWYgKHR5cGVvZiBudWJTaXplICE9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGhhbGZOdWJTaXplID0gbnViU2l6ZSAvIDI7XG4gIGNvbnN0IGhhbGZTdHJva2VXaWR0aCA9IHN0cm9rZVdpZHRoIC8gMjtcblxuICAvLyBIb3Jpem9udGFsbHkgbWlycm9yIHRoZSBudWIgaWYgaXQgaXMgZnJvbSB1c2VyXG4gIGNvbnN0IGhvcml6b250YWxUcmFuc2Zvcm0gPVxuICAgIHNpZGUgPT09ICdib3QnID8gJycgOiBgdHJhbnNsYXRlKCR7aGFsZk51YlNpemV9IDApIHNjYWxlKC0xIDEpIHRyYW5zbGF0ZSgkey1oYWxmTnViU2l6ZX0gMClgO1xuXG4gIC8vIFZlcnRpY2FsbHkgbWlycm9yIHRoZSBudWIgaWYgaXQgaXMgdXAtc2lkZS1kb3duXG4gIGNvbnN0IHZlcnRpY2FsVHJhbnNmb3JtID0gdXBTaWRlRG93biA/IGB0cmFuc2xhdGUoMCAke2hhbGZOdWJTaXplfSkgc2NhbGUoMSAtMSkgdHJhbnNsYXRlKDAgJHstaGFsZk51YlNpemV9KWAgOiAnJztcblxuICBjb25zdCBwMSA9IFtudWJTaXplLCBoYWxmU3Ryb2tlV2lkdGhdLmpvaW4oJyAnKTtcbiAgY29uc3QgcDIgPSBbc3Ryb2tlV2lkdGgsIGhhbGZTdHJva2VXaWR0aF0uam9pbignICcpO1xuICBjb25zdCBwMyA9IFtudWJTaXplICsgc3Ryb2tlV2lkdGgsIG51YlNpemUgKyBoYWxmU3Ryb2tlV2lkdGhdLmpvaW4oJyAnKTtcblxuICByZXR1cm4gKFxuICAgIDxzdmdcbiAgICAgIGNsYXNzTmFtZT1cIndlYmNoYXRfX2J1YmJsZV9fbnViXCJcbiAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgdmlld0JveD17YDAgMCAke251YlNpemV9ICR7bnViU2l6ZX1gfVxuICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgPlxuICAgICAgPGcgdHJhbnNmb3JtPXtgJHtob3Jpem9udGFsVHJhbnNmb3JtfSAke3ZlcnRpY2FsVHJhbnNmb3JtfWB9PlxuICAgICAgICA8cGF0aCBjbGFzc05hbWU9XCJ3ZWJjaGF0X19idWJibGVfX251Yi1vdXRsaW5lXCIgZD17YE0ke3AxfSBMJHtwMn0gTCR7cDN9YH0gLz5cbiAgICAgIDwvZz5cbiAgICA8L3N2Zz5cbiAgKTtcbn1cblxudHlwZSBCdWJibGVQcm9wcyA9IHtcbiAgJ2FyaWEtaGlkZGVuJz86IGJvb2xlYW47XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIGZyb21Vc2VyPzogYm9vbGVhbjtcbiAgbnViPzogYm9vbGVhbiB8ICdoaWRkZW4nO1xufTtcblxuY29uc3QgQnViYmxlOiBGQzxCdWJibGVQcm9wcz4gPSAoeyAnYXJpYS1oaWRkZW4nOiBhcmlhSGlkZGVuLCBjaGlsZHJlbiwgY2xhc3NOYW1lLCBmcm9tVXNlciwgbnViIH0pID0+IHtcbiAgY29uc3QgW3sgYnViYmxlOiBidWJibGVTdHlsZVNldCB9XSA9IHVzZVN0eWxlU2V0KCk7XG4gIGNvbnN0IFtkaXJlY3Rpb25dID0gdXNlRGlyZWN0aW9uKCk7XG4gIGNvbnN0IFtcbiAgICB7XG4gICAgICBidWJibGVCb3JkZXJXaWR0aCxcbiAgICAgIGJ1YmJsZUZyb21Vc2VyQm9yZGVyV2lkdGgsXG4gICAgICBidWJibGVGcm9tVXNlck51YlNpemUsXG4gICAgICBidWJibGVOdWJTaXplLFxuICAgICAgYnViYmxlTnViT2Zmc2V0LFxuICAgICAgYnViYmxlRnJvbVVzZXJOdWJPZmZzZXRcbiAgICB9XG4gIF0gPSB1c2VTdHlsZU9wdGlvbnMoKTtcbiAgY29uc3Qgcm9vdENsYXNzTmFtZSA9IHVzZVN0eWxlVG9FbW90aW9uT2JqZWN0KCkoUk9PVF9TVFlMRSkgKyAnJztcblxuICBjb25zdCB7IGJvcmRlcldpZHRoLCBudWJPZmZzZXQsIG51YlNpemUsIHNpZGUgfSA9IGZyb21Vc2VyXG4gICAgPyB7XG4gICAgICAgIGJvcmRlcldpZHRoOiBidWJibGVGcm9tVXNlckJvcmRlcldpZHRoLFxuICAgICAgICBudWJPZmZzZXQ6IGJ1YmJsZUZyb21Vc2VyTnViT2Zmc2V0LFxuICAgICAgICBudWJTaXplOiBidWJibGVGcm9tVXNlck51YlNpemUsXG4gICAgICAgIHNpZGU6ICd1c2VyJ1xuICAgICAgfVxuICAgIDoge1xuICAgICAgICBib3JkZXJXaWR0aDogYnViYmxlQm9yZGVyV2lkdGgsXG4gICAgICAgIG51Yk9mZnNldDogYnViYmxlTnViT2Zmc2V0LFxuICAgICAgICBudWJTaXplOiBidWJibGVOdWJTaXplLFxuICAgICAgICBzaWRlOiAnYm90J1xuICAgICAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGFyaWEtaGlkZGVuPXthcmlhSGlkZGVufVxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICAnd2ViY2hhdF9fYnViYmxlJyxcbiAgICAgICAge1xuICAgICAgICAgICd3ZWJjaGF0X19idWJibGUtLWZyb20tdXNlcic6IGZyb21Vc2VyLFxuICAgICAgICAgICd3ZWJjaGF0X19idWJibGUtLWhpZGUtbnViJzogbnViICE9PSB0cnVlICYmIG51YiAhPT0gZmFsc2UsXG4gICAgICAgICAgJ3dlYmNoYXRfX2J1YmJsZS0tbnViLW9uLXRvcCc6IGlzWmVyb09yUG9zaXRpdmUobnViT2Zmc2V0KSxcbiAgICAgICAgICAnd2ViY2hhdF9fYnViYmxlLS1ydGwnOiBkaXJlY3Rpb24gPT09ICdydGwnLFxuICAgICAgICAgICd3ZWJjaGF0X19idWJibGUtLXNob3ctbnViJzogbnViID09PSB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHJvb3RDbGFzc05hbWUsXG4gICAgICAgIGJ1YmJsZVN0eWxlU2V0ICsgJycsXG4gICAgICAgIChjbGFzc05hbWUgfHwgJycpICsgJydcbiAgICAgICl9XG4gICAgPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3ZWJjaGF0X19idWJibGVfX251Yi1wYWRcIiAvPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3ZWJjaGF0X19idWJibGVfX2NvbnRlbnRcIj57Y2hpbGRyZW59PC9kaXY+XG4gICAgICB7bnViID09PSB0cnVlICYmIGFjdXRlTnViU1ZHKG51YlNpemUsIGJvcmRlcldpZHRoLCBzaWRlLCAhaXNaZXJvT3JQb3NpdGl2ZShudWJPZmZzZXQpKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkJ1YmJsZS5kZWZhdWx0UHJvcHMgPSB7XG4gICdhcmlhLWhpZGRlbic6IHVuZGVmaW5lZCxcbiAgY2hpbGRyZW46IHVuZGVmaW5lZCxcbiAgY2xhc3NOYW1lOiAnJyxcbiAgZnJvbVVzZXI6IGZhbHNlLFxuICBudWI6IGZhbHNlXG59O1xuXG5CdWJibGUucHJvcFR5cGVzID0ge1xuICAnYXJpYS1oaWRkZW4nOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5hbnksXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgZnJvbVVzZXI6IFByb3BUeXBlcy5ib29sLFxuICBudWI6IFByb3BUeXBlcy5vbmVPZihbdHJ1ZSwgZmFsc2UsICdoaWRkZW4nXSlcbn07XG5cbkJ1YmJsZS5kaXNwbGF5TmFtZSA9ICdCdWJibGUnO1xuXG5leHBvcnQgZGVmYXVsdCBtZW1vKEJ1YmJsZSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSxJQUFBQSx1QkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBRCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBQyx1QkFBQSxDQUFBTCxPQUFBO0FB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