matrix-react-sdk
Version:
SDK for matrix.org using React
98 lines (96 loc) • 19.7 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _dispatcher = _interopRequireDefault(require("../../../dispatcher/dispatcher"));
var _actions = require("../../../dispatcher/actions");
var _strings = require("../../../utils/strings");
var _ContextMenu = require("../../structures/ContextMenu");
var _languageHandler = require("../../../languageHandler");
var _IconizedContextMenu = _interopRequireWildcard(require("./IconizedContextMenu"));
var _WidgetLayoutStore = require("../../../stores/widgets/WidgetLayoutStore");
var _MatrixClientPeg = require("../../../MatrixClientPeg");
const _excluded = ["mxEvent", "permalinkCreator", "onMenuToggle"];
/*
Copyright 2024 New Vector Ltd.
Copyright 2021 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (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; }
const contextMenuBelow = elementRect => {
// align the context menu's icons with the icon which opened the context menu
const left = elementRect.left + window.scrollX + elementRect.width;
const top = elementRect.bottom + window.scrollY;
const chevronFace = _ContextMenu.ChevronFace.None;
return {
left,
top,
chevronFace
};
};
const ThreadListContextMenu = _ref => {
let {
mxEvent,
permalinkCreator,
onMenuToggle
} = _ref,
props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
const [menuDisplayed, button, openMenu, closeThreadOptions] = (0, _ContextMenu.useContextMenu)();
const viewInRoom = (0, _react.useCallback)(evt => {
evt.preventDefault();
evt.stopPropagation();
_dispatcher.default.dispatch({
action: _actions.Action.ViewRoom,
event_id: mxEvent.getId(),
highlighted: true,
room_id: mxEvent.getRoomId(),
metricsTrigger: undefined // room doesn't change
});
closeThreadOptions();
}, [mxEvent, closeThreadOptions]);
const copyLinkToThread = (0, _react.useCallback)(async evt => {
if (permalinkCreator) {
evt?.preventDefault();
evt?.stopPropagation();
const matrixToUrl = permalinkCreator.forEvent(mxEvent.getId());
await (0, _strings.copyPlaintext)(matrixToUrl);
closeThreadOptions();
}
}, [mxEvent, closeThreadOptions, permalinkCreator]);
(0, _react.useEffect)(() => {
onMenuToggle?.(menuDisplayed);
}, [menuDisplayed, onMenuToggle]);
const room = _MatrixClientPeg.MatrixClientPeg.safeGet().getRoom(mxEvent.getRoomId());
const isMainSplitTimelineShown = !!room && !_WidgetLayoutStore.WidgetLayoutStore.instance.hasMaximisedWidget(room);
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ContextMenu.ContextMenuTooltipButton, (0, _extends2.default)({}, props, {
className: "mx_BaseCard_header_title_button--option",
onClick: openMenu,
title: (0, _languageHandler._t)("right_panel|thread_list|context_menu_label"),
isExpanded: menuDisplayed,
ref: button,
"data-testid": "threadlist-dropdown-button"
})), menuDisplayed && /*#__PURE__*/_react.default.createElement(_IconizedContextMenu.default, (0, _extends2.default)({
onFinished: closeThreadOptions,
className: "mx_RoomTile_contextMenu",
compact: true,
rightAligned: true
}, contextMenuBelow(button.current.getBoundingClientRect())), /*#__PURE__*/_react.default.createElement(_IconizedContextMenu.IconizedContextMenuOptionList, null, isMainSplitTimelineShown && /*#__PURE__*/_react.default.createElement(_IconizedContextMenu.IconizedContextMenuOption, {
onClick: e => viewInRoom(e),
label: (0, _languageHandler._t)("timeline|mab|view_in_room"),
iconClassName: "mx_ThreadPanel_viewInRoom"
}), permalinkCreator && /*#__PURE__*/_react.default.createElement(_IconizedContextMenu.IconizedContextMenuOption, {
"data-testid": "copy-thread-link",
onClick: e => copyLinkToThread(e),
label: (0, _languageHandler._t)("timeline|mab|copy_link_thread"),
iconClassName: "mx_ThreadPanel_copyLinkToThread"
}))));
};
var _default = exports.default = ThreadListContextMenu;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfZGlzcGF0Y2hlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfYWN0aW9ucyIsIl9zdHJpbmdzIiwiX0NvbnRleHRNZW51IiwiX2xhbmd1YWdlSGFuZGxlciIsIl9JY29uaXplZENvbnRleHRNZW51IiwiX1dpZGdldExheW91dFN0b3JlIiwiX01hdHJpeENsaWVudFBlZyIsIl9leGNsdWRlZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsImNvbnRleHRNZW51QmVsb3ciLCJlbGVtZW50UmVjdCIsImxlZnQiLCJ3aW5kb3ciLCJzY3JvbGxYIiwid2lkdGgiLCJ0b3AiLCJib3R0b20iLCJzY3JvbGxZIiwiY2hldnJvbkZhY2UiLCJDaGV2cm9uRmFjZSIsIk5vbmUiLCJUaHJlYWRMaXN0Q29udGV4dE1lbnUiLCJfcmVmIiwibXhFdmVudCIsInBlcm1hbGlua0NyZWF0b3IiLCJvbk1lbnVUb2dnbGUiLCJwcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllczIiLCJtZW51RGlzcGxheWVkIiwiYnV0dG9uIiwib3Blbk1lbnUiLCJjbG9zZVRocmVhZE9wdGlvbnMiLCJ1c2VDb250ZXh0TWVudSIsInZpZXdJblJvb20iLCJ1c2VDYWxsYmFjayIsImV2dCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiZGlzIiwiZGlzcGF0Y2giLCJhY3Rpb24iLCJBY3Rpb24iLCJWaWV3Um9vbSIsImV2ZW50X2lkIiwiZ2V0SWQiLCJoaWdobGlnaHRlZCIsInJvb21faWQiLCJnZXRSb29tSWQiLCJtZXRyaWNzVHJpZ2dlciIsInVuZGVmaW5lZCIsImNvcHlMaW5rVG9UaHJlYWQiLCJtYXRyaXhUb1VybCIsImZvckV2ZW50IiwiY29weVBsYWludGV4dCIsInVzZUVmZmVjdCIsInJvb20iLCJNYXRyaXhDbGllbnRQZWciLCJzYWZlR2V0IiwiZ2V0Um9vbSIsImlzTWFpblNwbGl0VGltZWxpbmVTaG93biIsIldpZGdldExheW91dFN0b3JlIiwiaW5zdGFuY2UiLCJoYXNNYXhpbWlzZWRXaWRnZXQiLCJjcmVhdGVFbGVtZW50IiwiRnJhZ21lbnQiLCJDb250ZXh0TWVudVRvb2x0aXBCdXR0b24iLCJfZXh0ZW5kczIiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwidGl0bGUiLCJfdCIsImlzRXhwYW5kZWQiLCJyZWYiLCJvbkZpbmlzaGVkIiwiY29tcGFjdCIsInJpZ2h0QWxpZ25lZCIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJJY29uaXplZENvbnRleHRNZW51T3B0aW9uTGlzdCIsIkljb25pemVkQ29udGV4dE1lbnVPcHRpb24iLCJsYWJlbCIsImljb25DbGFzc05hbWUiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9jb250ZXh0X21lbnVzL1RocmVhZExpc3RDb250ZXh0TWVudS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IE1hdHJpeEV2ZW50IH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL21hdHJpeFwiO1xuXG5pbXBvcnQgeyBCdXR0b25FdmVudCB9IGZyb20gXCIuLi9lbGVtZW50cy9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5pbXBvcnQgZGlzIGZyb20gXCIuLi8uLi8uLi9kaXNwYXRjaGVyL2Rpc3BhdGNoZXJcIjtcbmltcG9ydCB7IEFjdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9kaXNwYXRjaGVyL2FjdGlvbnNcIjtcbmltcG9ydCB7IFJvb21QZXJtYWxpbmtDcmVhdG9yIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3Blcm1hbGlua3MvUGVybWFsaW5rc1wiO1xuaW1wb3J0IHsgY29weVBsYWludGV4dCB9IGZyb20gXCIuLi8uLi8uLi91dGlscy9zdHJpbmdzXCI7XG5pbXBvcnQgeyBDaGV2cm9uRmFjZSwgQ29udGV4dE1lbnVUb29sdGlwQnV0dG9uLCBNZW51UHJvcHMsIHVzZUNvbnRleHRNZW51IH0gZnJvbSBcIi4uLy4uL3N0cnVjdHVyZXMvQ29udGV4dE1lbnVcIjtcbmltcG9ydCB7IF90IH0gZnJvbSBcIi4uLy4uLy4uL2xhbmd1YWdlSGFuZGxlclwiO1xuaW1wb3J0IEljb25pemVkQ29udGV4dE1lbnUsIHsgSWNvbml6ZWRDb250ZXh0TWVudU9wdGlvbiwgSWNvbml6ZWRDb250ZXh0TWVudU9wdGlvbkxpc3QgfSBmcm9tIFwiLi9JY29uaXplZENvbnRleHRNZW51XCI7XG5pbXBvcnQgeyBXaWRnZXRMYXlvdXRTdG9yZSB9IGZyb20gXCIuLi8uLi8uLi9zdG9yZXMvd2lkZ2V0cy9XaWRnZXRMYXlvdXRTdG9yZVwiO1xuaW1wb3J0IHsgTWF0cml4Q2xpZW50UGVnIH0gZnJvbSBcIi4uLy4uLy4uL01hdHJpeENsaWVudFBlZ1wiO1xuaW1wb3J0IHsgVmlld1Jvb21QYXlsb2FkIH0gZnJvbSBcIi4uLy4uLy4uL2Rpc3BhdGNoZXIvcGF5bG9hZHMvVmlld1Jvb21QYXlsb2FkXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGhyZWFkTGlzdENvbnRleHRNZW51UHJvcHMge1xuICAgIG14RXZlbnQ6IE1hdHJpeEV2ZW50O1xuICAgIHBlcm1hbGlua0NyZWF0b3I/OiBSb29tUGVybWFsaW5rQ3JlYXRvcjtcbiAgICBvbk1lbnVUb2dnbGU/OiAob3BlbjogYm9vbGVhbikgPT4gdm9pZDtcbn1cblxuY29uc3QgY29udGV4dE1lbnVCZWxvdyA9IChlbGVtZW50UmVjdDogRE9NUmVjdCk6IE1lbnVQcm9wcyA9PiB7XG4gICAgLy8gYWxpZ24gdGhlIGNvbnRleHQgbWVudSdzIGljb25zIHdpdGggdGhlIGljb24gd2hpY2ggb3BlbmVkIHRoZSBjb250ZXh0IG1lbnVcbiAgICBjb25zdCBsZWZ0ID0gZWxlbWVudFJlY3QubGVmdCArIHdpbmRvdy5zY3JvbGxYICsgZWxlbWVudFJlY3Qud2lkdGg7XG4gICAgY29uc3QgdG9wID0gZWxlbWVudFJlY3QuYm90dG9tICsgd2luZG93LnNjcm9sbFk7XG4gICAgY29uc3QgY2hldnJvbkZhY2UgPSBDaGV2cm9uRmFjZS5Ob25lO1xuICAgIHJldHVybiB7IGxlZnQsIHRvcCwgY2hldnJvbkZhY2UgfTtcbn07XG5cbmNvbnN0IFRocmVhZExpc3RDb250ZXh0TWVudTogUmVhY3QuRkM8VGhyZWFkTGlzdENvbnRleHRNZW51UHJvcHM+ID0gKHtcbiAgICBteEV2ZW50LFxuICAgIHBlcm1hbGlua0NyZWF0b3IsXG4gICAgb25NZW51VG9nZ2xlLFxuICAgIC4uLnByb3BzXG59KSA9PiB7XG4gICAgY29uc3QgW21lbnVEaXNwbGF5ZWQsIGJ1dHRvbiwgb3Blbk1lbnUsIGNsb3NlVGhyZWFkT3B0aW9uc10gPSB1c2VDb250ZXh0TWVudSgpO1xuXG4gICAgY29uc3Qgdmlld0luUm9vbSA9IHVzZUNhbGxiYWNrKFxuICAgICAgICAoZXZ0OiBCdXR0b25FdmVudCk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICBkaXMuZGlzcGF0Y2g8Vmlld1Jvb21QYXlsb2FkPih7XG4gICAgICAgICAgICAgICAgYWN0aW9uOiBBY3Rpb24uVmlld1Jvb20sXG4gICAgICAgICAgICAgICAgZXZlbnRfaWQ6IG14RXZlbnQuZ2V0SWQoKSxcbiAgICAgICAgICAgICAgICBoaWdobGlnaHRlZDogdHJ1ZSxcbiAgICAgICAgICAgICAgICByb29tX2lkOiBteEV2ZW50LmdldFJvb21JZCgpLFxuICAgICAgICAgICAgICAgIG1ldHJpY3NUcmlnZ2VyOiB1bmRlZmluZWQsIC8vIHJvb20gZG9lc24ndCBjaGFuZ2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY2xvc2VUaHJlYWRPcHRpb25zKCk7XG4gICAgICAgIH0sXG4gICAgICAgIFtteEV2ZW50LCBjbG9zZVRocmVhZE9wdGlvbnNdLFxuICAgICk7XG5cbiAgICBjb25zdCBjb3B5TGlua1RvVGhyZWFkID0gdXNlQ2FsbGJhY2soXG4gICAgICAgIGFzeW5jIChldnQ6IEJ1dHRvbkV2ZW50IHwgdW5kZWZpbmVkKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgICAgICBpZiAocGVybWFsaW5rQ3JlYXRvcikge1xuICAgICAgICAgICAgICAgIGV2dD8ucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBldnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG1hdHJpeFRvVXJsID0gcGVybWFsaW5rQ3JlYXRvci5mb3JFdmVudChteEV2ZW50LmdldElkKCkhKTtcbiAgICAgICAgICAgICAgICBhd2FpdCBjb3B5UGxhaW50ZXh0KG1hdHJpeFRvVXJsKTtcbiAgICAgICAgICAgICAgICBjbG9zZVRocmVhZE9wdGlvbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW214RXZlbnQsIGNsb3NlVGhyZWFkT3B0aW9ucywgcGVybWFsaW5rQ3JlYXRvcl0sXG4gICAgKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIG9uTWVudVRvZ2dsZT8uKG1lbnVEaXNwbGF5ZWQpO1xuICAgIH0sIFttZW51RGlzcGxheWVkLCBvbk1lbnVUb2dnbGVdKTtcblxuICAgIGNvbnN0IHJvb20gPSBNYXRyaXhDbGllbnRQZWcuc2FmZUdldCgpLmdldFJvb20obXhFdmVudC5nZXRSb29tSWQoKSk7XG4gICAgY29uc3QgaXNNYWluU3BsaXRUaW1lbGluZVNob3duID0gISFyb29tICYmICFXaWRnZXRMYXlvdXRTdG9yZS5pbnN0YW5jZS5oYXNNYXhpbWlzZWRXaWRnZXQocm9vbSk7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICAgPENvbnRleHRNZW51VG9vbHRpcEJ1dHRvblxuICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJteF9CYXNlQ2FyZF9oZWFkZXJfdGl0bGVfYnV0dG9uLS1vcHRpb25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29wZW5NZW51fVxuICAgICAgICAgICAgICAgIHRpdGxlPXtfdChcInJpZ2h0X3BhbmVsfHRocmVhZF9saXN0fGNvbnRleHRfbWVudV9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgICBpc0V4cGFuZGVkPXttZW51RGlzcGxheWVkfVxuICAgICAgICAgICAgICAgIHJlZj17YnV0dG9ufVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwidGhyZWFkbGlzdC1kcm9wZG93bi1idXR0b25cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIHttZW51RGlzcGxheWVkICYmIChcbiAgICAgICAgICAgICAgICA8SWNvbml6ZWRDb250ZXh0TWVudVxuICAgICAgICAgICAgICAgICAgICBvbkZpbmlzaGVkPXtjbG9zZVRocmVhZE9wdGlvbnN9XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cIm14X1Jvb21UaWxlX2NvbnRleHRNZW51XCJcbiAgICAgICAgICAgICAgICAgICAgY29tcGFjdFxuICAgICAgICAgICAgICAgICAgICByaWdodEFsaWduZWRcbiAgICAgICAgICAgICAgICAgICAgey4uLmNvbnRleHRNZW51QmVsb3coYnV0dG9uLmN1cnJlbnQhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJY29uaXplZENvbnRleHRNZW51T3B0aW9uTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc01haW5TcGxpdFRpbWVsaW5lU2hvd24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJY29uaXplZENvbnRleHRNZW51T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB2aWV3SW5Sb29tKGUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD17X3QoXCJ0aW1lbGluZXxtYWJ8dmlld19pbl9yb29tXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uQ2xhc3NOYW1lPVwibXhfVGhyZWFkUGFuZWxfdmlld0luUm9vbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgICAgICB7cGVybWFsaW5rQ3JlYXRvciAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEljb25pemVkQ29udGV4dE1lbnVPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LXRocmVhZC1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IGNvcHlMaW5rVG9UaHJlYWQoZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPXtfdChcInRpbWVsaW5lfG1hYnxjb3B5X2xpbmtfdGhyZWFkXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uQ2xhc3NOYW1lPVwibXhfVGhyZWFkUGFuZWxfY29weUxpbmtUb1RocmVhZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvSWNvbml6ZWRDb250ZXh0TWVudU9wdGlvbkxpc3Q+XG4gICAgICAgICAgICAgICAgPC9JY29uaXplZENvbnRleHRNZW51PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGhyZWFkTGlzdENvbnRleHRNZW51O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFRQSxJQUFBQSxNQUFBLEdBQUFDLHVCQUFBLENBQUFDLE9BQUE7QUFJQSxJQUFBQyxXQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxRQUFBLEdBQUFILE9BQUE7QUFFQSxJQUFBSSxRQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxZQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxnQkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sb0JBQUEsR0FBQVIsdUJBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLGtCQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxnQkFBQSxHQUFBVCxPQUFBO0FBQTJELE1BQUFVLFNBQUE7QUFwQjNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBTkEsU0FBQUMseUJBQUFDLENBQUEsNkJBQUFDLE9BQUEsbUJBQUFDLENBQUEsT0FBQUQsT0FBQSxJQUFBRSxDQUFBLE9BQUFGLE9BQUEsWUFBQUYsd0JBQUEsWUFBQUEsQ0FBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FB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