UNPKG

matrix-react-sdk

Version:
119 lines (116 loc) 17.4 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _classnames = _interopRequireDefault(require("classnames")); var _matrix = require("matrix-js-sdk/src/matrix"); var _Media = require("../../../customisations/Media"); var _languageHandler = require("../../../languageHandler"); var _FormattingUtils = require("../../../utils/FormattingUtils"); var _dispatcher = _interopRequireDefault(require("../../../dispatcher/dispatcher")); var _ReactionsRowButtonTooltip = _interopRequireDefault(require("./ReactionsRowButtonTooltip")); var _AccessibleButton = _interopRequireDefault(require("../elements/AccessibleButton")); var _MatrixClientContext = _interopRequireDefault(require("../../../contexts/MatrixClientContext")); var _ReactionsRow = require("./ReactionsRow"); /* Copyright 2024 New Vector Ltd. Copyright 2019-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. */ class ReactionsRowButton extends _react.default.PureComponent { constructor(...args) { super(...args); (0, _defineProperty2.default)(this, "onClick", () => { const { mxEvent, myReactionEvent, content } = this.props; if (myReactionEvent) { this.context.redactEvent(mxEvent.getRoomId(), myReactionEvent.getId()); } else { this.context.sendEvent(mxEvent.getRoomId(), _matrix.EventType.Reaction, { "m.relates_to": { rel_type: _matrix.RelationType.Annotation, event_id: mxEvent.getId(), key: content } }); _dispatcher.default.dispatch({ action: "message_sent" }); } }); } render() { const { mxEvent, content, count, reactionEvents, myReactionEvent } = this.props; const classes = (0, _classnames.default)({ mx_ReactionsRowButton: true, mx_ReactionsRowButton_selected: !!myReactionEvent }); const room = this.context.getRoom(mxEvent.getRoomId()); let label; let customReactionName; if (room) { const senders = []; for (const reactionEvent of reactionEvents) { const member = room.getMember(reactionEvent.getSender()); senders.push(member?.name || reactionEvent.getSender()); customReactionName = this.props.customReactionImagesEnabled && _ReactionsRow.REACTION_SHORTCODE_KEY.findIn(reactionEvent.getContent()) || undefined; } const reactors = (0, _FormattingUtils.formatList)(senders, 6); if (content) { label = (0, _languageHandler._t)("timeline|reactions|label", { reactors, content: customReactionName || content }); } else { label = reactors; } } let reactionContent = /*#__PURE__*/_react.default.createElement("span", { className: "mx_ReactionsRowButton_content", "aria-hidden": "true" }, content); if (this.props.customReactionImagesEnabled && content.startsWith("mxc://")) { const imageSrc = (0, _Media.mediaFromMxc)(content).srcHttp; if (imageSrc) { reactionContent = /*#__PURE__*/_react.default.createElement("img", { className: "mx_ReactionsRowButton_content", alt: customReactionName || (0, _languageHandler._t)("timeline|reactions|custom_reaction_fallback_label"), src: imageSrc, width: "16", height: "16" }); } } return /*#__PURE__*/_react.default.createElement(_ReactionsRowButtonTooltip.default, { mxEvent: this.props.mxEvent, content: content, reactionEvents: reactionEvents, customReactionImagesEnabled: this.props.customReactionImagesEnabled }, /*#__PURE__*/_react.default.createElement(_AccessibleButton.default, { className: classes, "aria-label": label, onClick: this.onClick, disabled: this.props.disabled }, reactionContent, /*#__PURE__*/_react.default.createElement("span", { className: "mx_ReactionsRowButton_count", "aria-hidden": "true" }, count))); } } exports.default = ReactionsRowButton; (0, _defineProperty2.default)(ReactionsRowButton, "contextType", _MatrixClientContext.default); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jbGFzc25hbWVzIiwiX21hdHJpeCIsIl9NZWRpYSIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfRm9ybWF0dGluZ1V0aWxzIiwiX2Rpc3BhdGNoZXIiLCJfUmVhY3Rpb25zUm93QnV0dG9uVG9vbHRpcCIsIl9BY2Nlc3NpYmxlQnV0dG9uIiwiX01hdHJpeENsaWVudENvbnRleHQiLCJfUmVhY3Rpb25zUm93IiwiUmVhY3Rpb25zUm93QnV0dG9uIiwiUmVhY3QiLCJQdXJlQ29tcG9uZW50IiwiY29uc3RydWN0b3IiLCJhcmdzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJteEV2ZW50IiwibXlSZWFjdGlvbkV2ZW50IiwiY29udGVudCIsInByb3BzIiwiY29udGV4dCIsInJlZGFjdEV2ZW50IiwiZ2V0Um9vbUlkIiwiZ2V0SWQiLCJzZW5kRXZlbnQiLCJFdmVudFR5cGUiLCJSZWFjdGlvbiIsInJlbF90eXBlIiwiUmVsYXRpb25UeXBlIiwiQW5ub3RhdGlvbiIsImV2ZW50X2lkIiwia2V5IiwiZGlzIiwiZGlzcGF0Y2giLCJhY3Rpb24iLCJyZW5kZXIiLCJjb3VudCIsInJlYWN0aW9uRXZlbnRzIiwiY2xhc3NlcyIsImNsYXNzTmFtZXMiLCJteF9SZWFjdGlvbnNSb3dCdXR0b24iLCJteF9SZWFjdGlvbnNSb3dCdXR0b25fc2VsZWN0ZWQiLCJyb29tIiwiZ2V0Um9vbSIsImxhYmVsIiwiY3VzdG9tUmVhY3Rpb25OYW1lIiwic2VuZGVycyIsInJlYWN0aW9uRXZlbnQiLCJtZW1iZXIiLCJnZXRNZW1iZXIiLCJnZXRTZW5kZXIiLCJwdXNoIiwibmFtZSIsImN1c3RvbVJlYWN0aW9uSW1hZ2VzRW5hYmxlZCIsIlJFQUNUSU9OX1NIT1JUQ09ERV9LRVkiLCJmaW5kSW4iLCJnZXRDb250ZW50IiwidW5kZWZpbmVkIiwicmVhY3RvcnMiLCJmb3JtYXRMaXN0IiwiX3QiLCJyZWFjdGlvbkNvbnRlbnQiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwic3RhcnRzV2l0aCIsImltYWdlU3JjIiwibWVkaWFGcm9tTXhjIiwic3JjSHR0cCIsImFsdCIsInNyYyIsIndpZHRoIiwiaGVpZ2h0Iiwib25DbGljayIsImRpc2FibGVkIiwiZXhwb3J0cyIsIk1hdHJpeENsaWVudENvbnRleHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy92aWV3cy9tZXNzYWdlcy9SZWFjdGlvbnNSb3dCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qXG5Db3B5cmlnaHQgMjAyNCBOZXcgVmVjdG9yIEx0ZC5cbkNvcHlyaWdodCAyMDE5LTIwMjEgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIjtcbmltcG9ydCB7IEV2ZW50VHlwZSwgTWF0cml4RXZlbnQsIFJlbGF0aW9uVHlwZSB9IGZyb20gXCJtYXRyaXgtanMtc2RrL3NyYy9tYXRyaXhcIjtcblxuaW1wb3J0IHsgbWVkaWFGcm9tTXhjIH0gZnJvbSBcIi4uLy4uLy4uL2N1c3RvbWlzYXRpb25zL01lZGlhXCI7XG5pbXBvcnQgeyBfdCB9IGZyb20gXCIuLi8uLi8uLi9sYW5ndWFnZUhhbmRsZXJcIjtcbmltcG9ydCB7IGZvcm1hdExpc3QgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvRm9ybWF0dGluZ1V0aWxzXCI7XG5pbXBvcnQgZGlzIGZyb20gXCIuLi8uLi8uLi9kaXNwYXRjaGVyL2Rpc3BhdGNoZXJcIjtcbmltcG9ydCBSZWFjdGlvbnNSb3dCdXR0b25Ub29sdGlwIGZyb20gXCIuL1JlYWN0aW9uc1Jvd0J1dHRvblRvb2x0aXBcIjtcbmltcG9ydCBBY2Nlc3NpYmxlQnV0dG9uIGZyb20gXCIuLi9lbGVtZW50cy9BY2Nlc3NpYmxlQnV0dG9uXCI7XG5pbXBvcnQgTWF0cml4Q2xpZW50Q29udGV4dCBmcm9tIFwiLi4vLi4vLi4vY29udGV4dHMvTWF0cml4Q2xpZW50Q29udGV4dFwiO1xuaW1wb3J0IHsgUkVBQ1RJT05fU0hPUlRDT0RFX0tFWSB9IGZyb20gXCIuL1JlYWN0aW9uc1Jvd1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQcm9wcyB7XG4gICAgLy8gVGhlIGV2ZW50IHdlJ3JlIGRpc3BsYXlpbmcgcmVhY3Rpb25zIGZvclxuICAgIG14RXZlbnQ6IE1hdHJpeEV2ZW50O1xuICAgIC8vIFRoZSByZWFjdGlvbiBjb250ZW50IC8ga2V5IC8gZW1vamlcbiAgICBjb250ZW50OiBzdHJpbmc7XG4gICAgLy8gVGhlIGNvdW50IG9mIHZvdGVzIGZvciB0aGlzIGtleVxuICAgIGNvdW50OiBudW1iZXI7XG4gICAgLy8gQSBsaXN0IG9mIE1hdHJpeCByZWFjdGlvbiBldmVudHMgZm9yIHRoaXMga2V5XG4gICAgcmVhY3Rpb25FdmVudHM6IE1hdHJpeEV2ZW50W107XG4gICAgLy8gQSBwb3NzaWJsZSBNYXRyaXggZXZlbnQgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgdm90ZWQgZm9yIHRoaXMgdHlwZVxuICAgIG15UmVhY3Rpb25FdmVudD86IE1hdHJpeEV2ZW50O1xuICAgIC8vIFdoZXRoZXIgdG8gcHJldmVudCBxdWljay1yZWFjdGlvbnMgYnkgY2xpY2tpbmcgb24gdGhpcyByZWFjdGlvblxuICAgIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgICAvLyBXaGV0aGVyIHRvIHJlbmRlciBjdXN0b20gaW1hZ2UgcmVhY3Rpb25zXG4gICAgY3VzdG9tUmVhY3Rpb25JbWFnZXNFbmFibGVkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVhY3Rpb25zUm93QnV0dG9uIGV4dGVuZHMgUmVhY3QuUHVyZUNvbXBvbmVudDxJUHJvcHM+IHtcbiAgICBwdWJsaWMgc3RhdGljIGNvbnRleHRUeXBlID0gTWF0cml4Q2xpZW50Q29udGV4dDtcbiAgICBwdWJsaWMgZGVjbGFyZSBjb250ZXh0OiBSZWFjdC5Db250ZXh0VHlwZTx0eXBlb2YgTWF0cml4Q2xpZW50Q29udGV4dD47XG5cbiAgICBwdWJsaWMgb25DbGljayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgeyBteEV2ZW50LCBteVJlYWN0aW9uRXZlbnQsIGNvbnRlbnQgfSA9IHRoaXMucHJvcHM7XG4gICAgICAgIGlmIChteVJlYWN0aW9uRXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5yZWRhY3RFdmVudChteEV2ZW50LmdldFJvb21JZCgpISwgbXlSZWFjdGlvbkV2ZW50LmdldElkKCkhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29udGV4dC5zZW5kRXZlbnQobXhFdmVudC5nZXRSb29tSWQoKSEsIEV2ZW50VHlwZS5SZWFjdGlvbiwge1xuICAgICAgICAgICAgICAgIFwibS5yZWxhdGVzX3RvXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgcmVsX3R5cGU6IFJlbGF0aW9uVHlwZS5Bbm5vdGF0aW9uLFxuICAgICAgICAgICAgICAgICAgICBldmVudF9pZDogbXhFdmVudC5nZXRJZCgpISxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBjb250ZW50LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpcy5kaXNwYXRjaCh7IGFjdGlvbjogXCJtZXNzYWdlX3NlbnRcIiB9KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIGNvbnN0IHsgbXhFdmVudCwgY29udGVudCwgY291bnQsIHJlYWN0aW9uRXZlbnRzLCBteVJlYWN0aW9uRXZlbnQgfSA9IHRoaXMucHJvcHM7XG5cbiAgICAgICAgY29uc3QgY2xhc3NlcyA9IGNsYXNzTmFtZXMoe1xuICAgICAgICAgICAgbXhfUmVhY3Rpb25zUm93QnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgbXhfUmVhY3Rpb25zUm93QnV0dG9uX3NlbGVjdGVkOiAhIW15UmVhY3Rpb25FdmVudCxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgcm9vbSA9IHRoaXMuY29udGV4dC5nZXRSb29tKG14RXZlbnQuZ2V0Um9vbUlkKCkpO1xuICAgICAgICBsZXQgbGFiZWw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgICAgbGV0IGN1c3RvbVJlYWN0aW9uTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAocm9vbSkge1xuICAgICAgICAgICAgY29uc3Qgc2VuZGVyczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcmVhY3Rpb25FdmVudCBvZiByZWFjdGlvbkV2ZW50cykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1lbWJlciA9IHJvb20uZ2V0TWVtYmVyKHJlYWN0aW9uRXZlbnQuZ2V0U2VuZGVyKCkhKTtcbiAgICAgICAgICAgICAgICBzZW5kZXJzLnB1c2gobWVtYmVyPy5uYW1lIHx8IHJlYWN0aW9uRXZlbnQuZ2V0U2VuZGVyKCkhKTtcbiAgICAgICAgICAgICAgICBjdXN0b21SZWFjdGlvbk5hbWUgPVxuICAgICAgICAgICAgICAgICAgICAodGhpcy5wcm9wcy5jdXN0b21SZWFjdGlvbkltYWdlc0VuYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIFJFQUNUSU9OX1NIT1JUQ09ERV9LRVkuZmluZEluKHJlYWN0aW9uRXZlbnQuZ2V0Q29udGVudCgpKSkgfHxcbiAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCByZWFjdG9ycyA9IGZvcm1hdExpc3Qoc2VuZGVycywgNik7XG4gICAgICAgICAgICBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICAgIGxhYmVsID0gX3QoXCJ0aW1lbGluZXxyZWFjdGlvbnN8bGFiZWxcIiwge1xuICAgICAgICAgICAgICAgICAgICByZWFjdG9ycyxcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogY3VzdG9tUmVhY3Rpb25OYW1lIHx8IGNvbnRlbnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGxhYmVsID0gcmVhY3RvcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgcmVhY3Rpb25Db250ZW50ID0gKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfUmVhY3Rpb25zUm93QnV0dG9uX2NvbnRlbnRcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuY3VzdG9tUmVhY3Rpb25JbWFnZXNFbmFibGVkICYmIGNvbnRlbnQuc3RhcnRzV2l0aChcIm14YzovL1wiKSkge1xuICAgICAgICAgICAgY29uc3QgaW1hZ2VTcmMgPSBtZWRpYUZyb21NeGMoY29udGVudCkuc3JjSHR0cDtcbiAgICAgICAgICAgIGlmIChpbWFnZVNyYykge1xuICAgICAgICAgICAgICAgIHJlYWN0aW9uQ29udGVudCA9IChcbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwibXhfUmVhY3Rpb25zUm93QnV0dG9uX2NvbnRlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PXtjdXN0b21SZWFjdGlvbk5hbWUgfHwgX3QoXCJ0aW1lbGluZXxyZWFjdGlvbnN8Y3VzdG9tX3JlYWN0aW9uX2ZhbGxiYWNrX2xhYmVsXCIpfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3JjPXtpbWFnZVNyY31cbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPFJlYWN0aW9uc1Jvd0J1dHRvblRvb2x0aXBcbiAgICAgICAgICAgICAgICBteEV2ZW50PXt0aGlzLnByb3BzLm14RXZlbnR9XG4gICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cbiAgICAgICAgICAgICAgICByZWFjdGlvbkV2ZW50cz17cmVhY3Rpb25FdmVudHN9XG4gICAgICAgICAgICAgICAgY3VzdG9tUmVhY3Rpb25JbWFnZXNFbmFibGVkPXt0aGlzLnByb3BzLmN1c3RvbVJlYWN0aW9uSW1hZ2VzRW5hYmxlZH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXN9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2xhYmVsfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXt0aGlzLnByb3BzLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3JlYWN0aW9uQ29udGVudH1cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfUmVhY3Rpb25zUm93QnV0dG9uX2NvdW50XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7Y291bnR9XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICAgICAgICAgICA8L1JlYWN0aW9uc1Jvd0J1dHRvblRvb2x0aXA+XG4gICAgICAgICk7XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLGdCQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxnQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sV0FBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sMEJBQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLGlCQUFBLEdBQUFULHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBUyxvQkFBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsYUFBQSxHQUFBVixPQUFBO0FBbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWdDZSxNQUFNVyxrQkFBa0IsU0FBU0MsY0FBSyxDQUFDQyxhQUFhLENBQVM7RUFBQUMsWUFBQSxHQUFBQyxJQUFBO0lBQUEsU0FBQUEsSUFBQTtJQUFBLElBQUFDLGdCQUFBLENBQUFDLE9BQUEsbUJBSXZELE1BQVk7TUFDekIsTUFBTTtRQUFFQyxPQUFPO1FBQUVDLGVBQWU7UUFBRUM7TUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDQyxLQUFLO01BQ3hELElBQUlGLGVBQWUsRUFBRTtRQUNqQixJQUFJLENBQUNHLE9BQU8sQ0FBQ0MsV0FBVyxDQUFDTCxPQUFPLENBQUNNLFNBQVMsQ0FBQyxDQUFDLEVBQUdMLGVBQWUsQ0FBQ00sS0FBSyxDQUFDLENBQUUsQ0FBQztNQUM1RSxDQUFDLE1BQU07UUFDSCxJQUFJLENBQUNILE9BQU8sQ0FBQ0ksU0FB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