matrix-react-sdk
Version:
SDK for matrix.org using React
122 lines (120 loc) • 20.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
exports.idNameForRoom = idNameForRoom;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _matrix = require("matrix-js-sdk/src/matrix");
var _BaseAvatar = _interopRequireDefault(require("./BaseAvatar"));
var _ImageView = _interopRequireDefault(require("../elements/ImageView"));
var _MatrixClientPeg = require("../../../MatrixClientPeg");
var _Modal = _interopRequireDefault(require("../../../Modal"));
var Avatar = _interopRequireWildcard(require("../../../Avatar"));
var _DMRoomMap = _interopRequireDefault(require("../../../utils/DMRoomMap"));
var _Media = require("../../../customisations/Media");
var _LocalRoom = require("../../../models/LocalRoom");
var _arrays = require("../../../utils/arrays");
const _excluded = ["room", "oobData", "viewAvatarOnClick", "onClick", "className"];
/*
Copyright 2024 New Vector Ltd.
Copyright 2015, 2016 OpenMarket Ltd
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; }
function idNameForRoom(room) {
const dmMapUserId = _DMRoomMap.default.shared().getUserIdForRoomId(room.roomId);
// If the room is a DM, we use the other user's ID for the color hash
// in order to match the room avatar with their avatar
if (dmMapUserId) return dmMapUserId;
if (room instanceof _LocalRoom.LocalRoom && room.targets.length === 1) {
return room.targets[0].userId;
}
return room.roomId;
}
class RoomAvatar extends _react.default.Component {
constructor(props) {
super(props);
(0, _defineProperty2.default)(this, "onRoomStateEvents", ev => {
if (ev.getRoomId() !== this.props.room?.roomId || ev.getType() !== _matrix.EventType.RoomAvatar) return;
this.setState({
urls: RoomAvatar.getImageUrls(this.props)
});
});
(0, _defineProperty2.default)(this, "onRoomAvatarClick", () => {
const avatarUrl = Avatar.avatarUrlForRoom(this.props.room ?? null, undefined, undefined, undefined);
if (!avatarUrl) return;
const params = {
src: avatarUrl,
name: this.props.room?.name
};
_Modal.default.createDialog(_ImageView.default, params, "mx_Dialog_lightbox", undefined, true);
});
this.state = {
urls: RoomAvatar.getImageUrls(this.props)
};
}
componentDidMount() {
_MatrixClientPeg.MatrixClientPeg.safeGet().on(_matrix.RoomStateEvent.Events, this.onRoomStateEvents);
}
componentWillUnmount() {
_MatrixClientPeg.MatrixClientPeg.get()?.removeListener(_matrix.RoomStateEvent.Events, this.onRoomStateEvents);
}
static getDerivedStateFromProps(nextProps) {
return {
urls: RoomAvatar.getImageUrls(nextProps)
};
}
static getImageUrls(props) {
let oobAvatar = null;
if (props.oobData.avatarUrl) {
oobAvatar = (0, _Media.mediaFromMxc)(props.oobData.avatarUrl).getThumbnailOfSourceHttp(parseInt(props.size, 10), parseInt(props.size, 10), "crop");
}
return (0, _arrays.filterBoolean)([oobAvatar,
// highest priority
RoomAvatar.getRoomAvatarUrl(props)]);
}
static getRoomAvatarUrl(props) {
if (!props.room) return null;
return Avatar.avatarUrlForRoom(props.room, parseInt(props.size, 10), parseInt(props.size, 10), "crop");
}
get roomIdName() {
const room = this.props.room;
if (room) {
return idNameForRoom(room);
} else {
return this.props.oobData?.roomId;
}
}
render() {
const _this$props = this.props,
{
room,
oobData,
viewAvatarOnClick,
onClick,
className
} = _this$props,
otherProps = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
const roomName = room?.name ?? oobData.name ?? "?";
return /*#__PURE__*/_react.default.createElement(_BaseAvatar.default, (0, _extends2.default)({}, otherProps, {
type: (room?.getType() ?? this.props.oobData?.roomType) === _matrix.RoomType.Space ? "square" : "round",
name: roomName,
idName: this.roomIdName,
urls: this.state.urls,
onClick: viewAvatarOnClick && this.state.urls[0] ? this.onRoomAvatarClick : onClick
}));
}
}
exports.default = RoomAvatar;
(0, _defineProperty2.default)(RoomAvatar, "defaultProps", {
size: "36px",
oobData: {}
});
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tYXRyaXgiLCJfQmFzZUF2YXRhciIsIl9JbWFnZVZpZXciLCJfTWF0cml4Q2xpZW50UGVnIiwiX01vZGFsIiwiQXZhdGFyIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfRE1Sb29tTWFwIiwiX01lZGlhIiwiX0xvY2FsUm9vbSIsIl9hcnJheXMiLCJfZXhjbHVkZWQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJpZE5hbWVGb3JSb29tIiwicm9vbSIsImRtTWFwVXNlcklkIiwiRE1Sb29tTWFwIiwic2hhcmVkIiwiZ2V0VXNlcklkRm9yUm9vbUlkIiwicm9vbUlkIiwiTG9jYWxSb29tIiwidGFyZ2V0cyIsImxlbmd0aCIsInVzZXJJZCIsIlJvb21BdmF0YXIiLCJSZWFjdCIsIkNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwicHJvcHMiLCJfZGVmaW5lUHJvcGVydHkyIiwiZXYiLCJnZXRSb29tSWQiLCJnZXRUeXBlIiwiRXZlbnRUeXBlIiwic2V0U3RhdGUiLCJ1cmxzIiwiZ2V0SW1hZ2VVcmxzIiwiYXZhdGFyVXJsIiwiYXZhdGFyVXJsRm9yUm9vbSIsInVuZGVmaW5lZCIsInBhcmFtcyIsInNyYyIsIm5hbWUiLCJNb2RhbCIsImNyZWF0ZURpYWxvZyIsIkltYWdlVmlldyIsInN0YXRlIiwiY29tcG9uZW50RGlkTW91bnQiLCJNYXRyaXhDbGllbnRQZWciLCJzYWZlR2V0Iiwib24iLCJSb29tU3RhdGVFdmVudCIsIkV2ZW50cyIsIm9uUm9vbVN0YXRlRXZlbnRzIiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJyZW1vdmVMaXN0ZW5lciIsImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyIsIm5leHRQcm9wcyIsIm9vYkF2YXRhciIsIm9vYkRhdGEiLCJtZWRpYUZyb21NeGMiLCJnZXRUaHVtYm5haWxPZlNvdXJjZUh0dHAiLCJwYXJzZUludCIsInNpemUiLCJmaWx0ZXJCb29sZWFuIiwiZ2V0Um9vbUF2YXRhclVybCIsInJvb21JZE5hbWUiLCJyZW5kZXIiLCJfdGhpcyRwcm9wcyIsInZpZXdBdmF0YXJPbkNsaWNrIiwib25DbGljayIsImNsYXNzTmFtZSIsIm90aGVyUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMyIiwicm9vbU5hbWUiLCJjcmVhdGVFbGVtZW50IiwiX2V4dGVuZHMyIiwidHlwZSIsInJvb21UeXBlIiwiUm9vbVR5cGUiLCJTcGFjZSIsImlkTmFtZSIsIm9uUm9vbUF2YXRhckNsaWNrIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2F2YXRhcnMvUm9vbUF2YXRhci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMTUsIDIwMTYgT3Blbk1hcmtldCBMdGRcblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudFByb3BzIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBSb29tLCBSb29tU3RhdGVFdmVudCwgTWF0cml4RXZlbnQsIEV2ZW50VHlwZSwgUm9vbVR5cGUgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCBCYXNlQXZhdGFyIGZyb20gXCIuL0Jhc2VBdmF0YXJcIjtcbmltcG9ydCBJbWFnZVZpZXcgZnJvbSBcIi4uL2VsZW1lbnRzL0ltYWdlVmlld1wiO1xuaW1wb3J0IHsgTWF0cml4Q2xpZW50UGVnIH0gZnJvbSBcIi4uLy4uLy4uL01hdHJpeENsaWVudFBlZ1wiO1xuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi8uLi9Nb2RhbFwiO1xuaW1wb3J0ICogYXMgQXZhdGFyIGZyb20gXCIuLi8uLi8uLi9BdmF0YXJcIjtcbmltcG9ydCBETVJvb21NYXAgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL0RNUm9vbU1hcFwiO1xuaW1wb3J0IHsgbWVkaWFGcm9tTXhjIH0gZnJvbSBcIi4uLy4uLy4uL2N1c3RvbWlzYXRpb25zL01lZGlhXCI7XG5pbXBvcnQgeyBJT09CRGF0YSB9IGZyb20gXCIuLi8uLi8uLi9zdG9yZXMvVGhyZWVwaWRJbnZpdGVTdG9yZVwiO1xuaW1wb3J0IHsgTG9jYWxSb29tIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9Mb2NhbFJvb21cIjtcbmltcG9ydCB7IGZpbHRlckJvb2xlYW4gfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvYXJyYXlzXCI7XG5cbmludGVyZmFjZSBJUHJvcHMgZXh0ZW5kcyBPbWl0PENvbXBvbmVudFByb3BzPHR5cGVvZiBCYXNlQXZhdGFyPiwgXCJuYW1lXCIgfCBcImlkTmFtZVwiIHwgXCJ1cmxcIiB8IFwib25DbGlja1wiPiB7XG4gICAgLy8gUm9vbSBtYXkgYmUgbGVmdCB1bnNldCBoZXJlLCBidXQgaWYgaXQgaXMsXG4gICAgLy8gb29iRGF0YS5hdmF0YXJVcmwgc2hvdWxkIGJlIHNldCAoZWxzZSB0aGVyZVxuICAgIC8vIHdvdWxkIGJlIG5vd2hlcmUgdG8gZ2V0IHRoZSBhdmF0YXIgZnJvbSlcbiAgICByb29tPzogUm9vbTtcbiAgICBvb2JEYXRhOiBJT09CRGF0YSAmIHtcbiAgICAgICAgcm9vbUlkPzogc3RyaW5nO1xuICAgIH07XG4gICAgdmlld0F2YXRhck9uQ2xpY2s/OiBib29sZWFuO1xuICAgIG9uQ2xpY2s/KCk6IHZvaWQ7XG59XG5cbmludGVyZmFjZSBJU3RhdGUge1xuICAgIHVybHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaWROYW1lRm9yUm9vbShyb29tOiBSb29tKTogc3RyaW5nIHtcbiAgICBjb25zdCBkbU1hcFVzZXJJZCA9IERNUm9vbU1hcC5zaGFyZWQoKS5nZXRVc2VySWRGb3JSb29tSWQocm9vbS5yb29tSWQpO1xuICAgIC8vIElmIHRoZSByb29tIGlzIGEgRE0sIHdlIHVzZSB0aGUgb3RoZXIgdXNlcidzIElEIGZvciB0aGUgY29sb3IgaGFzaFxuICAgIC8vIGluIG9yZGVyIHRvIG1hdGNoIHRoZSByb29tIGF2YXRhciB3aXRoIHRoZWlyIGF2YXRhclxuICAgIGlmIChkbU1hcFVzZXJJZCkgcmV0dXJuIGRtTWFwVXNlcklkO1xuXG4gICAgaWYgKHJvb20gaW5zdGFuY2VvZiBMb2NhbFJvb20gJiYgcm9vbS50YXJnZXRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gcm9vbS50YXJnZXRzWzBdLnVzZXJJZDtcbiAgICB9XG5cbiAgICByZXR1cm4gcm9vbS5yb29tSWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJvb21BdmF0YXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgICBwdWJsaWMgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICAgICAgc2l6ZTogXCIzNnB4XCIsXG4gICAgICAgIG9vYkRhdGE6IHt9LFxuICAgIH07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IocHJvcHM6IElQcm9wcykge1xuICAgICAgICBzdXBlcihwcm9wcyk7XG5cbiAgICAgICAgdGhpcy5zdGF0ZSA9IHtcbiAgICAgICAgICAgIHVybHM6IFJvb21BdmF0YXIuZ2V0SW1hZ2VVcmxzKHRoaXMucHJvcHMpLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcbiAgICAgICAgTWF0cml4Q2xpZW50UGVnLnNhZmVHZXQoKS5vbihSb29tU3RhdGVFdmVudC5FdmVudHMsIHRoaXMub25Sb29tU3RhdGVFdmVudHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCgpOiB2b2lkIHtcbiAgICAgICAgTWF0cml4Q2xpZW50UGVnLmdldCgpPy5yZW1vdmVMaXN0ZW5lcihSb29tU3RhdGVFdmVudC5FdmVudHMsIHRoaXMub25Sb29tU3RhdGVFdmVudHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzKG5leHRQcm9wczogSVByb3BzKTogSVN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHVybHM6IFJvb21BdmF0YXIuZ2V0SW1hZ2VVcmxzKG5leHRQcm9wcyksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb21TdGF0ZUV2ZW50cyA9IChldjogTWF0cml4RXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKGV2LmdldFJvb21JZCgpICE9PSB0aGlzLnByb3BzLnJvb20/LnJvb21JZCB8fCBldi5nZXRUeXBlKCkgIT09IEV2ZW50VHlwZS5Sb29tQXZhdGFyKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB1cmxzOiBSb29tQXZhdGFyLmdldEltYWdlVXJscyh0aGlzLnByb3BzKSxcbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgc3RhdGljIGdldEltYWdlVXJscyhwcm9wczogSVByb3BzKTogc3RyaW5nW10ge1xuICAgICAgICBsZXQgb29iQXZhdGFyOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICAgICAgaWYgKHByb3BzLm9vYkRhdGEuYXZhdGFyVXJsKSB7XG4gICAgICAgICAgICBvb2JBdmF0YXIgPSBtZWRpYUZyb21NeGMocHJvcHMub29iRGF0YS5hdmF0YXJVcmwpLmdldFRodW1ibmFpbE9mU291cmNlSHR0cChcbiAgICAgICAgICAgICAgICBwYXJzZUludChwcm9wcy5zaXplLCAxMCksXG4gICAgICAgICAgICAgICAgcGFyc2VJbnQocHJvcHMuc2l6ZSwgMTApLFxuICAgICAgICAgICAgICAgIFwiY3JvcFwiLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJCb29sZWFuKFtcbiAgICAgICAgICAgIG9vYkF2YXRhciwgLy8gaGlnaGVzdCBwcmlvcml0eVxuICAgICAgICAgICAgUm9vbUF2YXRhci5nZXRSb29tQXZhdGFyVXJsKHByb3BzKSxcbiAgICAgICAgXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgZ2V0Um9vbUF2YXRhclVybChwcm9wczogSVByb3BzKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgICAgIGlmICghcHJvcHMucm9vbSkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgcmV0dXJuIEF2YXRhci5hdmF0YXJVcmxGb3JSb29tKHByb3BzLnJvb20sIHBhcnNlSW50KHByb3BzLnNpemUsIDEwKSwgcGFyc2VJbnQocHJvcHMuc2l6ZSwgMTApLCBcImNyb3BcIik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvblJvb21BdmF0YXJDbGljayA9ICgpOiB2b2lkID0+IHtcbiAgICAgICAgY29uc3QgYXZhdGFyVXJsID0gQXZhdGFyLmF2YXRhclVybEZvclJvb20odGhpcy5wcm9wcy5yb29tID8/IG51bGwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgICAgICBpZiAoIWF2YXRhclVybCkgcmV0dXJuO1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICBzcmM6IGF2YXRhclVybCxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMucHJvcHMucm9vbT8ubmFtZSxcbiAgICAgICAgfTtcblxuICAgICAgICBNb2RhbC5jcmVhdGVEaWFsb2coSW1hZ2VWaWV3LCBwYXJhbXMsIFwibXhfRGlhbG9nX2xpZ2h0Ym94XCIsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgZ2V0IHJvb21JZE5hbWUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3Qgcm9vbSA9IHRoaXMucHJvcHMucm9vbTtcblxuICAgICAgICBpZiAocm9vbSkge1xuICAgICAgICAgICAgcmV0dXJuIGlkTmFtZUZvclJvb20ocm9vbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wcm9wcy5vb2JEYXRhPy5yb29tSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XG4gICAgICAgIGNvbnN0IHsgcm9vbSwgb29iRGF0YSwgdmlld0F2YXRhck9uQ2xpY2ssIG9uQ2xpY2ssIGNsYXNzTmFtZSwgLi4ub3RoZXJQcm9wcyB9ID0gdGhpcy5wcm9wcztcbiAgICAgICAgY29uc3Qgcm9vbU5hbWUgPSByb29tPy5uYW1lID8/IG9vYkRhdGEubmFtZSA/PyBcIj9cIjtcblxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPEJhc2VBdmF0YXJcbiAgICAgICAgICAgICAgICB7Li4ub3RoZXJQcm9wc31cbiAgICAgICAgICAgICAgICB0eXBlPXsocm9vbT8uZ2V0VHlwZSgpID8/IHRoaXMucHJvcHMub29iRGF0YT8ucm9vbVR5cGUpID09PSBSb29tVHlwZS5TcGFjZSA/IFwic3F1YXJlXCIgOiBcInJvdW5kXCJ9XG4gICAgICAgICAgICAgICAgbmFtZT17cm9vbU5hbWV9XG4gICAgICAgICAgICAgICAgaWROYW1lPXt0aGlzLnJvb21JZE5hbWV9XG4gICAgICAgICAgICAgICAgdXJscz17dGhpcy5zdGF0ZS51cmxzfVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e3ZpZXdBdmF0YXJPbkNsaWNrICYmIHRoaXMuc3RhdGUudXJsc1swXSA/IHRoaXMub25Sb29tQXZhdGFyQ2xpY2sgOiBvbkNsaWNr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