botframework-webchat-component
Version:
React component of botframework-webchat
133 lines (132 loc) • 28.6 kB
JavaScript
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 _reactFilm = require("react-film");
var _classnames = _interopRequireDefault(require("classnames"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _react = _interopRequireWildcard(require("react"));
var _CarouselFilmStrip = _interopRequireDefault(require("./CarouselFilmStrip"));
var _useNonce3 = _interopRequireDefault(require("../hooks/internal/useNonce"));
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 ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return 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; }
var useDirection = _botframeworkWebchatApi.hooks.useDirection,
useLocalizer = _botframeworkWebchatApi.hooks.useLocalizer;
var ROOT_STYLE = {
'&.webchat__carousel-layout': {
overflow: 'hidden',
position: 'relative'
}
};
var CarouselLayoutCore = function CarouselLayoutCore(_ref) {
var activity = _ref.activity,
hideTimestamp = _ref.hideTimestamp,
renderActivityStatus = _ref.renderActivityStatus,
renderAttachment = _ref.renderAttachment,
renderAvatar = _ref.renderAvatar,
showCallout = _ref.showCallout;
var _useStyleSet = (0, _useStyleSet3.default)(),
_useStyleSet2 = _slicedToArray(_useStyleSet, 1),
carouselFlipperStyleSet = _useStyleSet2[0].carouselFlipper;
var _useReactFilmStyleSet = (0, _reactFilm.useStyleSetClassNames)(),
_useReactFilmStyleSet2 = _slicedToArray(_useReactFilmStyleSet, 1),
filmRootClassName = _useReactFilmStyleSet2[0].root;
var _useDirection = useDirection(),
_useDirection2 = _slicedToArray(_useDirection, 1),
direction = _useDirection2[0];
var _useScrollBarWidth = (0, _reactFilm.useScrollBarWidth)(),
_useScrollBarWidth2 = _slicedToArray(_useScrollBarWidth, 1),
scrollBarWidth = _useScrollBarWidth2[0];
var _useScrolling = (0, _reactFilm.useScrolling)(),
_useScrolling2 = _slicedToArray(_useScrolling, 1),
scrolling = _useScrolling2[0];
var leftSideFlipper = direction === 'rtl' ? '>' : '<';
var localize = useLocalizer();
var rightSideFlipper = direction === 'rtl' ? '<' : '>';
var rootClassName = (0, _useStyleToEmotionObject.default)()(ROOT_STYLE) + '';
var nextAlt = localize('CAROUSEL_FLIPPER_NEXT_ALT');
var previousAlt = localize('CAROUSEL_FLIPPER_PREVIOUS_ALT');
var leftFlipperAriaLabel = direction === 'rtl' ? nextAlt : previousAlt;
var rightFlipperAriaLabel = direction === 'rtl' ? previousAlt : nextAlt;
return /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames.default)('webchat__carousel-layout', rootClassName, carouselFlipperStyleSet + '', filmRootClassName)
}, /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames.default)('react-film__main', {
'react-film__main--scrolling': scrolling
})
}, /*#__PURE__*/_react.default.createElement(_CarouselFilmStrip.default, {
activity: activity,
hideTimestamp: hideTimestamp,
renderActivityStatus: renderActivityStatus,
renderAttachment: renderAttachment,
renderAvatar: renderAvatar,
showCallout: showCallout
}), scrollBarWidth !== '100%' && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_reactFilm.Flipper, {
"aria-label": leftFlipperAriaLabel,
blurFocusOnClick: true,
mode: "left"
}, leftSideFlipper), /*#__PURE__*/_react.default.createElement(_reactFilm.Flipper, {
"aria-label": rightFlipperAriaLabel,
blurFocusOnClick: true,
mode: "right"
}, rightSideFlipper))));
};
CarouselLayoutCore.defaultProps = {
hideTimestamp: false,
renderActivityStatus: false,
renderAvatar: false,
showCallout: true
};
CarouselLayoutCore.propTypes = {
activity: _propTypes.default.shape({
attachments: _propTypes.default.array
}).isRequired,
hideTimestamp: _propTypes.default.bool,
renderActivityStatus: _propTypes.default.oneOfType([_propTypes.default.oneOf([false]), _propTypes.default.func]),
renderAttachment: _propTypes.default.func.isRequired,
renderAvatar: _propTypes.default.oneOfType([_propTypes.default.oneOf([false]), _propTypes.default.func]),
showCallout: _propTypes.default.bool
};
var CarouselLayout = function CarouselLayout(props) {
var _props$activity = props.activity;
_props$activity = _props$activity === void 0 ? {} : _props$activity;
var _props$activity$attac = _props$activity.attachments,
attachments = _props$activity$attac === void 0 ? [] : _props$activity$attac;
var _useDirection3 = useDirection(),
_useDirection4 = _slicedToArray(_useDirection3, 1),
direction = _useDirection4[0];
var _useNonce = (0, _useNonce3.default)(),
_useNonce2 = _slicedToArray(_useNonce, 1),
nonce = _useNonce2[0];
var filmStyleSet = (0, _react.useMemo)(function () {
return (0, _reactFilm.createBasicStyleSet)({
cursor: null
});
}, []);
return /*#__PURE__*/_react.default.createElement(_reactFilm.Composer, {
dir: direction,
nonce: nonce,
numItems: attachments.length,
styleSet: filmStyleSet
}, /*#__PURE__*/_react.default.createElement(CarouselLayoutCore, props));
};
CarouselLayout.defaultProps = _objectSpread({}, CarouselLayoutCore.defaultProps);
CarouselLayout.propTypes = _objectSpread({}, CarouselLayoutCore.propTypes);
var _default = /*#__PURE__*/(0, _react.memo)(CarouselLayout);
exports.default = _default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYm90ZnJhbWV3b3JrV2ViY2hhdEFwaSIsInJlcXVpcmUiLCJfcmVhY3RGaWxtIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3Byb3BUeXBlcyIsIl9yZWFjdCIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX0Nhcm91c2VsRmlsbVN0cmlwIiwiX3VzZU5vbmNlMyIsIl91c2VTdHlsZVNldDMiLCJfdXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJvYmoiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsIm93bktleXMiLCJvYmplY3QiLCJlbnVtZXJhYmxlT25seSIsImtleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJzeW1ib2xzIiwiZmlsdGVyIiwic3ltIiwiZW51bWVyYWJsZSIsInB1c2giLCJhcHBseSIsIl9vYmplY3RTcHJlYWQiLCJ0YXJnZXQiLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic291cmNlIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIl9zbGljZWRUb0FycmF5IiwiYXJyIiwiX2FycmF5V2l0aEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheUxpbWl0IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiX25vbkl0ZXJhYmxlUmVzdCIsIlR5cGVFcnJvciIsIm8iLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiQXJyYXkiLCJmcm9tIiwidGVzdCIsImxlbiIsImFycjIiLCJfaSIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiX2FyciIsIl9uIiwiX2QiLCJfcyIsIl9lIiwibmV4dCIsImRvbmUiLCJlcnIiLCJpc0FycmF5IiwidXNlRGlyZWN0aW9uIiwiaG9va3MiLCJ1c2VMb2NhbGl6ZXIiLCJST09UX1NUWUxFIiwib3ZlcmZsb3ciLCJwb3NpdGlvbiIsIkNhcm91c2VsTGF5b3V0Q29yZSIsIl9yZWYiLCJhY3Rpdml0eSIsImhpZGVUaW1lc3RhbXAiLCJyZW5kZXJBY3Rpdml0eVN0YXR1cyIsInJlbmRlckF0dGFjaG1lbnQiLCJyZW5kZXJBdmF0YXIiLCJzaG93Q2FsbG91dCIsIl91c2VTdHlsZVNldCIsInVzZVN0eWxlU2V0IiwiX3VzZVN0eWxlU2V0MiIsImNhcm91c2VsRmxpcHBlclN0eWxlU2V0IiwiY2Fyb3VzZWxGbGlwcGVyIiwiX3VzZVJlYWN0RmlsbVN0eWxlU2V0IiwidXNlUmVhY3RGaWxtU3R5bGVTZXRDbGFzc05hbWVzIiwiX3VzZVJlYWN0RmlsbVN0eWxlU2V0MiIsImZpbG1Sb290Q2xhc3NOYW1lIiwicm9vdCIsIl91c2VEaXJlY3Rpb24iLCJfdXNlRGlyZWN0aW9uMiIsImRpcmVjdGlvbiIsIl91c2VTY3JvbGxCYXJXaWR0aCIsInVzZVNjcm9sbEJhcldpZHRoIiwiX3VzZVNjcm9sbEJhcldpZHRoMiIsInNjcm9sbEJhcldpZHRoIiwiX3VzZVNjcm9sbGluZyIsInVzZVNjcm9sbGluZyIsIl91c2VTY3JvbGxpbmcyIiwic2Nyb2xsaW5nIiwibGVmdFNpZGVGbGlwcGVyIiwibG9jYWxpemUiLCJyaWdodFNpZGVGbGlwcGVyIiwicm9vdENsYXNzTmFtZSIsInVzZVN0eWxlVG9FbW90aW9uT2JqZWN0IiwibmV4dEFsdCIsInByZXZpb3VzQWx0IiwibGVmdEZsaXBwZXJBcmlhTGFiZWwiLCJyaWdodEZsaXBwZXJBcmlhTGFiZWwiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwiY2xhc3NOYW1lcyIsIkZyYWdtZW50IiwiRmxpcHBlciIsImJsdXJGb2N1c09uQ2xpY2siLCJtb2RlIiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwic2hhcGUiLCJhdHRhY2htZW50cyIsImFycmF5IiwiaXNSZXF1aXJlZCIsImJvb2wiLCJvbmVPZlR5cGUiLCJvbmVPZiIsImZ1bmMiLCJDYXJvdXNlbExheW91dCIsInByb3BzIiwiX3Byb3BzJGFjdGl2aXR5IiwiX3Byb3BzJGFjdGl2aXR5JGF0dGFjIiwiX3VzZURpcmVjdGlvbjMiLCJfdXNlRGlyZWN0aW9uNCIsIl91c2VOb25jZSIsInVzZU5vbmNlIiwiX3VzZU5vbmNlMiIsIm5vbmNlIiwiZmlsbVN0eWxlU2V0IiwidXNlTWVtbyIsImNyZWF0ZUJhc2ljU3R5bGVTZXRGb3JSZWFjdEZpbG0iLCJjdXJzb3IiLCJDb21wb3NlciIsImRpciIsIm51bUl0ZW1zIiwic3R5bGVTZXQiLCJfZGVmYXVsdCIsIm1lbW8iLCJleHBvcnRzIl0sInNvdXJjZVJvb3QiOiJjb21wb25lbnQ6Ly8vIiwic291cmNlcyI6WyIuLi8uLi9zcmMvQWN0aXZpdHkvQ2Fyb3VzZWxMYXlvdXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaG9va3MgfSBmcm9tICdib3RmcmFtZXdvcmstd2ViY2hhdC1hcGknO1xuaW1wb3J0IHtcbiAgQ29tcG9zZXIgYXMgRmlsbUNvbXBvc2VyLFxuICBjcmVhdGVCYXNpY1N0eWxlU2V0IGFzIGNyZWF0ZUJhc2ljU3R5bGVTZXRGb3JSZWFjdEZpbG0sXG4gIEZsaXBwZXIsXG4gIHVzZVNjcm9sbEJhcldpZHRoLFxuICB1c2VTY3JvbGxpbmcsXG4gIHVzZVN0eWxlU2V0Q2xhc3NOYW1lcyBhcyB1c2VSZWFjdEZpbG1TdHlsZVNldENsYXNzTmFtZXNcbn0gZnJvbSAncmVhY3QtZmlsbSc7XG5cbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCwgeyBtZW1vLCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgQ2Fyb3VzZWxGaWxtU3RyaXAgZnJvbSAnLi9DYXJvdXNlbEZpbG1TdHJpcCc7XG5pbXBvcnQgdXNlTm9uY2UgZnJvbSAnLi4vaG9va3MvaW50ZXJuYWwvdXNlTm9uY2UnO1xuaW1wb3J0IHVzZVN0eWxlU2V0IGZyb20gJy4uL2hvb2tzL3VzZVN0eWxlU2V0JztcbmltcG9ydCB1c2VTdHlsZVRvRW1vdGlvbk9iamVjdCBmcm9tICcuLi9ob29rcy9pbnRlcm5hbC91c2VTdHlsZVRvRW1vdGlvbk9iamVjdCc7XG5cbmNvbnN0IHsgdXNlRGlyZWN0aW9uLCB1c2VMb2NhbGl6ZXIgfSA9IGhvb2tzO1xuXG5jb25zdCBST09UX1NUWUxFID0ge1xuICAnJi53ZWJjaGF0X19jYXJvdXNlbC1sYXlvdXQnOiB7XG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gIH1cbn07XG5cbmNvbnN0IENhcm91c2VsTGF5b3V0Q29yZSA9ICh7XG4gIGFjdGl2aXR5LFxuICBoaWRlVGltZXN0YW1wLFxuICByZW5kZXJBY3Rpdml0eVN0YXR1cyxcbiAgcmVuZGVyQXR0YWNobWVudCxcbiAgcmVuZGVyQXZhdGFyLFxuICBzaG93Q2FsbG91dFxufSkgPT4ge1xuICBjb25zdCBbeyBjYXJvdXNlbEZsaXBwZXI6IGNhcm91c2VsRmxpcHBlclN0eWxlU2V0IH1dID0gdXNlU3R5bGVTZXQoKTtcbiAgY29uc3QgW3sgcm9vdDogZmlsbVJvb3RDbGFzc05hbWUgfV0gPSB1c2VSZWFjdEZpbG1TdHlsZVNldENsYXNzTmFtZXMoKTtcbiAgY29uc3QgW2RpcmVjdGlvbl0gPSB1c2VEaXJlY3Rpb24oKTtcbiAgY29uc3QgW3Njcm9sbEJhcldpZHRoXSA9IHVzZVNjcm9sbEJhcldpZHRoKCk7XG4gIGNvbnN0IFtzY3JvbGxpbmddID0gdXNlU2Nyb2xsaW5nKCk7XG4gIGNvbnN0IGxlZnRTaWRlRmxpcHBlciA9IGRpcmVjdGlvbiA9PT0gJ3J0bCcgPyAnPicgOiAnPCc7XG4gIGNvbnN0IGxvY2FsaXplID0gdXNlTG9jYWxpemVyKCk7XG4gIGNvbnN0IHJpZ2h0U2lkZUZsaXBwZXIgPSBkaXJlY3Rpb24gPT09ICdydGwnID8gJzwnIDogJz4nO1xuICBjb25zdCByb290Q2xhc3NOYW1lID0gdXNlU3R5bGVUb0Vtb3Rpb25PYmplY3QoKShST09UX1NUWUxFKSArICcnO1xuXG4gIGNvbnN0IG5leHRBbHQgPSBsb2NhbGl6ZSgnQ0FST1VTRUxfRkxJUFBFUl9ORVhUX0FMVCcpO1xuICBjb25zdCBwcmV2aW91c0FsdCA9IGxvY2FsaXplKCdDQVJPVVNFTF9GTElQUEVSX1BSRVZJT1VTX0FMVCcpO1xuXG4gIGNvbnN0IGxlZnRGbGlwcGVyQXJpYUxhYmVsID0gZGlyZWN0aW9uID09PSAncnRsJyA/IG5leHRBbHQgOiBwcmV2aW91c0FsdDtcbiAgY29uc3QgcmlnaHRGbGlwcGVyQXJpYUxhYmVsID0gZGlyZWN0aW9uID09PSAncnRsJyA/IHByZXZpb3VzQWx0IDogbmV4dEFsdDtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcygnd2ViY2hhdF9fY2Fyb3VzZWwtbGF5b3V0Jywgcm9vdENsYXNzTmFtZSwgY2Fyb3VzZWxGbGlwcGVyU3R5bGVTZXQgKyAnJywgZmlsbVJvb3RDbGFzc05hbWUpfVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdyZWFjdC1maWxtX19tYWluJywgeyAncmVhY3QtZmlsbV9fbWFpbi0tc2Nyb2xsaW5nJzogc2Nyb2xsaW5nIH0pfT5cbiAgICAgICAgPENhcm91c2VsRmlsbVN0cmlwXG4gICAgICAgICAgYWN0aXZpdHk9e2FjdGl2aXR5fVxuICAgICAgICAgIGhpZGVUaW1lc3RhbXA9e2hpZGVUaW1lc3RhbXB9XG4gICAgICAgICAgcmVuZGVyQWN0aXZpdHlTdGF0dXM9e3JlbmRlckFjdGl2aXR5U3RhdHVzfVxuICAgICAgICAgIHJlbmRlckF0dGFjaG1lbnQ9e3JlbmRlckF0dGFjaG1lbnR9XG4gICAgICAgICAgcmVuZGVyQXZhdGFyPXtyZW5kZXJBdmF0YXJ9XG4gICAgICAgICAgc2hvd0NhbGxvdXQ9e3Nob3dDYWxsb3V0fVxuICAgICAgICAvPlxuICAgICAgICB7c2Nyb2xsQmFyV2lkdGggIT09ICcxMDAlJyAmJiAoXG4gICAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgPEZsaXBwZXIgYXJpYS1sYWJlbD17bGVmdEZsaXBwZXJBcmlhTGFiZWx9IGJsdXJGb2N1c09uQ2xpY2s9e3RydWV9IG1vZGU9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgIHtsZWZ0U2lkZUZsaXBwZXJ9XG4gICAgICAgICAgICA8L0ZsaXBwZXI+XG4gICAgICAgICAgICA8RmxpcHBlciBhcmlhLWxhYmVsPXtyaWdodEZsaXBwZXJBcmlhTGFiZWx9IGJsdXJGb2N1c09uQ2xpY2s9e3RydWV9IG1vZGU9XCJyaWdodFwiPlxuICAgICAgICAgICAgICB7cmlnaHRTaWRlRmxpcHBlcn1cbiAgICAgICAgICAgIDwvRmxpcHBlcj5cbiAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DYXJvdXNlbExheW91dENvcmUuZGVmYXVsdFByb3BzID0ge1xuICBoaWRlVGltZXN0YW1wOiBmYWxzZSxcbiAgcmVuZGVyQWN0aXZpdHlTdGF0dXM6IGZhbHNlLFxuICByZW5kZXJBdmF0YXI6IGZhbHNlLFxuICBzaG93Q2FsbG91dDogdHJ1ZVxufTtcblxuQ2Fyb3VzZWxMYXlvdXRDb3JlLnByb3BUeXBlcyA9IHtcbiAgYWN0aXZpdHk6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgYXR0YWNobWVudHM6IFByb3BUeXBlcy5hcnJheVxuICB9KS5pc1JlcXVpcmVkLFxuICBoaWRlVGltZXN0YW1wOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVuZGVyQWN0aXZpdHlTdGF0dXM6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbZmFsc2VdKSwgUHJvcFR5cGVzLmZ1bmNdKSxcbiAgcmVuZGVyQXR0YWNobWVudDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgcmVuZGVyQXZhdGFyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoW2ZhbHNlXSksIFByb3BUeXBlcy5mdW5jXSksXG4gIHNob3dDYWxsb3V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuY29uc3QgQ2Fyb3VzZWxMYXlvdXQgPSBwcm9wcyA9PiB7XG4gIGNvbnN0IHsgYWN0aXZpdHk6IHsgYXR0YWNobWVudHMgPSBbXSB9ID0ge30gfSA9IHByb3BzO1xuICBjb25zdCBbZGlyZWN0aW9uXSA9IHVzZURpcmVjdGlvbigpO1xuICBjb25zdCBbbm9uY2VdID0gdXNlTm9uY2UoKTtcbiAgY29uc3QgZmlsbVN0eWxlU2V0ID0gdXNlTWVtbygoKSA9PiBjcmVhdGVCYXNpY1N0eWxlU2V0Rm9yUmVhY3RGaWxtKHsgY3Vyc29yOiBudWxsIH0pLCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8RmlsbUNvbXBvc2VyIGRpcj17ZGlyZWN0aW9ufSBub25jZT17bm9uY2V9IG51bUl0ZW1zPXthdHRhY2htZW50cy5sZW5ndGh9IHN0eWxlU2V0PXtmaWxtU3R5bGVTZXR9PlxuICAgICAgPENhcm91c2VsTGF5b3V0Q29yZSB7Li4ucHJvcHN9IC8+XG4gICAgPC9GaWxtQ29tcG9zZXI+XG4gICk7XG59O1xuXG5DYXJvdXNlbExheW91dC5kZWZhdWx0UHJvcHMgPSB7XG4gIC4uLkNhcm91c2VsTGF5b3V0Q29yZS5kZWZhdWx0UHJvcHNcbn07XG5cbkNhcm91c2VsTGF5b3V0LnByb3BUeXBlcyA9IHtcbiAgLi4uQ2Fyb3VzZWxMYXlvdXRDb3JlLnByb3BUeXBlc1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhDYXJvdXNlbExheW91dCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSx1QkFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBU0EsSUFBQUUsV0FBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksVUFBQSxHQUFBRCxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBQyx1QkFBQSxDQUFBTixPQUFBO0FBRUEsSUFBQU8sa0JBQUEsR0FBQUosc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFRLFVBQUEsR0FBQUwsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFTLGFBQUEsR0FBQU4sc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFVLHdCQUFBLEdBQUFQLHNCQUFBLENBQUFILE9BQUE7QUFBZ0YsU0FBQVcseUJBQUFDLFdBQUEsZUFBQUMsT0FBQSxrQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxRQUFBRSxnQkFBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxXQUFBLFdBQUFBLFdBQUEsR0FBQUcsZ0JBQUEsR0FBQUQsaUJBQUEsS0FBQUYsV0FBQTtBQUFBLFNBQUFOLHdCQUFBVSxHQUFBLEVBQUFKLFdBQUEsU0FBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxXQUFBRCxHQUFBLFFBQUFBLEdBQUEsYUFBQUUsT0FBQSxDQUFBRixHQUFBLHlCQUFBQSxHQUFBLDRCQUFBRyxPQUFBLEVBQUFILEdBQUEsVUFBQUksS0FBQSxHQUFBVCx3QkFBQSxDQUFBQyxXQUFBLE9BQUFRLEtBQUEsSUFBQUEsS0FBQSxDQUFBQyxHQUFBLENBQUFMLEdBQUEsWUFBQUksS0FBQSxDQUFBRSxHQUFBLENBQUFOLEdBQUEsU0FBQU8sTUFBQSxXQUFBQyxxQkFBQSxHQUFB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
;