UNPKG

matrix-react-sdk

Version:
104 lines (101 loc) 18 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 _randomstring = require("matrix-js-sdk/src/randomstring"); var _SettingsStore = _interopRequireDefault(require("../../../settings/SettingsStore")); var _languageHandler = require("../../../languageHandler"); var _ToggleSwitch = _interopRequireDefault(require("./ToggleSwitch")); var _StyledCheckbox = _interopRequireDefault(require("./StyledCheckbox")); var _Settings = require("../../../settings/Settings"); /* Copyright 2024 New Vector Ltd. Copyright 2019 The Matrix.org Foundation C.I.C. Copyright 2017 Travis Ralston SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ class SettingsFlag extends _react.default.Component { constructor(props) { super(props); (0, _defineProperty2.default)(this, "id", `mx_SettingsFlag_${(0, _randomstring.randomString)(12)}`); (0, _defineProperty2.default)(this, "onSettingChange", () => { this.setState({ value: this.getSettingValue() }); }); (0, _defineProperty2.default)(this, "onChange", async checked => { await this.save(checked); this.setState({ value: checked }); this.props.onChange?.(checked); }); (0, _defineProperty2.default)(this, "checkBoxOnChange", e => { this.onChange(e.target.checked); }); (0, _defineProperty2.default)(this, "save", async val => { await _SettingsStore.default.setValue(this.props.name, this.props.roomId ?? null, this.props.level, val !== undefined ? val : this.state.value); }); this.state = { value: this.getSettingValue() }; } componentDidMount() { _Settings.defaultWatchManager.watchSetting(this.props.name, this.props.roomId ?? null, this.onSettingChange); } componentWillUnmount() { _Settings.defaultWatchManager.unwatchSetting(this.onSettingChange); } getSettingValue() { // If a level defined in props is overridden by a level at a high presedence, it gets disabled // and we should show the overridding value. if (_SettingsStore.default.settingIsOveriddenAtConfigLevel(this.props.name, this.props.roomId ?? null, this.props.level)) { return !!_SettingsStore.default.getValue(this.props.name); } return !!_SettingsStore.default.getValueAt(this.props.level, this.props.name, this.props.roomId ?? null, this.props.isExplicit); } render() { const disabled = !_SettingsStore.default.canSetValue(this.props.name, this.props.roomId ?? null, this.props.level); if (disabled && this.props.hideIfCannotSet) return null; const label = this.props.label ?? _SettingsStore.default.getDisplayName(this.props.name, this.props.level); const description = _SettingsStore.default.getDescription(this.props.name); const shouldWarn = _SettingsStore.default.shouldHaveWarning(this.props.name); if (this.props.useCheckbox) { return /*#__PURE__*/_react.default.createElement(_StyledCheckbox.default, { checked: this.state.value, onChange: this.checkBoxOnChange, disabled: disabled }, label); } else { return /*#__PURE__*/_react.default.createElement("div", { className: "mx_SettingsFlag" }, /*#__PURE__*/_react.default.createElement("label", { className: "mx_SettingsFlag_label", htmlFor: this.id }, /*#__PURE__*/_react.default.createElement("span", { className: "mx_SettingsFlag_labelText" }, label), description && /*#__PURE__*/_react.default.createElement("div", { className: "mx_SettingsFlag_microcopy" }, shouldWarn ? (0, _languageHandler._t)("settings|warning", {}, { w: sub => /*#__PURE__*/_react.default.createElement("span", { className: "mx_SettingsTab_microcopy_warning" }, sub), description }) : description)), /*#__PURE__*/_react.default.createElement(_ToggleSwitch.default, { id: this.id, checked: this.state.value, onChange: this.onChange, disabled: disabled, tooltip: disabled ? _SettingsStore.default.disabledMessage(this.props.name) : undefined, title: label ?? undefined })); } } } exports.default = SettingsFlag; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yYW5kb21zdHJpbmciLCJfU2V0dGluZ3NTdG9yZSIsIl9sYW5ndWFnZUhhbmRsZXIiLCJfVG9nZ2xlU3dpdGNoIiwiX1N0eWxlZENoZWNrYm94IiwiX1NldHRpbmdzIiwiU2V0dGluZ3NGbGFnIiwiUmVhY3QiLCJDb21wb25lbnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5MiIsImRlZmF1bHQiLCJyYW5kb21TdHJpbmciLCJzZXRTdGF0ZSIsInZhbHVlIiwiZ2V0U2V0dGluZ1ZhbHVlIiwiY2hlY2tlZCIsInNhdmUiLCJvbkNoYW5nZSIsImUiLCJ0YXJnZXQiLCJ2YWwiLCJTZXR0aW5nc1N0b3JlIiwic2V0VmFsdWUiLCJuYW1lIiwicm9vbUlkIiwibGV2ZWwiLCJ1bmRlZmluZWQiLCJzdGF0ZSIsImNvbXBvbmVudERpZE1vdW50IiwiZGVmYXVsdFdhdGNoTWFuYWdlciIsIndhdGNoU2V0dGluZyIsIm9uU2V0dGluZ0NoYW5nZSIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwidW53YXRjaFNldHRpbmciLCJzZXR0aW5nSXNPdmVyaWRkZW5BdENvbmZpZ0xldmVsIiwiZ2V0VmFsdWUiLCJnZXRWYWx1ZUF0IiwiaXNFeHBsaWNpdCIsInJlbmRlciIsImRpc2FibGVkIiwiY2FuU2V0VmFsdWUiLCJoaWRlSWZDYW5ub3RTZXQiLCJsYWJlbCIsImdldERpc3BsYXlOYW1lIiwiZGVzY3JpcHRpb24iLCJnZXREZXNjcmlwdGlvbiIsInNob3VsZFdhcm4iLCJzaG91bGRIYXZlV2FybmluZyIsInVzZUNoZWNrYm94IiwiY3JlYXRlRWxlbWVudCIsImNoZWNrQm94T25DaGFuZ2UiLCJjbGFzc05hbWUiLCJodG1sRm9yIiwiaWQiLCJfdCIsInciLCJzdWIiLCJ0b29sdGlwIiwiZGlzYWJsZWRNZXNzYWdlIiwidGl0bGUiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvdmlld3MvZWxlbWVudHMvU2V0dGluZ3NGbGFnLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAxOSBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuQ29weXJpZ2h0IDIwMTcgVHJhdmlzIFJhbHN0b25cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgcmFuZG9tU3RyaW5nIH0gZnJvbSBcIm1hdHJpeC1qcy1zZGsvc3JjL3JhbmRvbXN0cmluZ1wiO1xuXG5pbXBvcnQgU2V0dGluZ3NTdG9yZSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3MvU2V0dGluZ3NTdG9yZVwiO1xuaW1wb3J0IHsgX3QgfSBmcm9tIFwiLi4vLi4vLi4vbGFuZ3VhZ2VIYW5kbGVyXCI7XG5pbXBvcnQgVG9nZ2xlU3dpdGNoIGZyb20gXCIuL1RvZ2dsZVN3aXRjaFwiO1xuaW1wb3J0IFN0eWxlZENoZWNrYm94IGZyb20gXCIuL1N0eWxlZENoZWNrYm94XCI7XG5pbXBvcnQgeyBTZXR0aW5nTGV2ZWwgfSBmcm9tIFwiLi4vLi4vLi4vc2V0dGluZ3MvU2V0dGluZ0xldmVsXCI7XG5pbXBvcnQgeyBkZWZhdWx0V2F0Y2hNYW5hZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL3NldHRpbmdzL1NldHRpbmdzXCI7XG5cbmludGVyZmFjZSBJUHJvcHMge1xuICAgIC8vIFRoZSBzZXR0aW5nIG11c3QgYmUgYSBib29sZWFuXG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGxldmVsOiBTZXR0aW5nTGV2ZWw7XG4gICAgcm9vbUlkPzogc3RyaW5nOyAvLyBmb3IgcGVyLXJvb20gc2V0dGluZ3NcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBpc0V4cGxpY2l0PzogYm9vbGVhbjtcbiAgICAvLyBYWFg6IG9uY2UgZGVzaWduIHJlcGxhY2VzIGFsbCB0b2dnbGVzIG1ha2UgdGhpcyB0aGUgZGVmYXVsdFxuICAgIHVzZUNoZWNrYm94PzogYm9vbGVhbjtcbiAgICBoaWRlSWZDYW5ub3RTZXQ/OiBib29sZWFuO1xuICAgIG9uQ2hhbmdlPyhjaGVja2VkOiBib29sZWFuKTogdm9pZDtcbn1cblxuaW50ZXJmYWNlIElTdGF0ZSB7XG4gICAgdmFsdWU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNldHRpbmdzRmxhZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJUHJvcHMsIElTdGF0ZT4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaWQgPSBgbXhfU2V0dGluZ3NGbGFnXyR7cmFuZG9tU3RyaW5nKDEyKX1gO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKHByb3BzOiBJUHJvcHMpIHtcbiAgICAgICAgc3VwZXIocHJvcHMpO1xuXG4gICAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRTZXR0aW5nVmFsdWUoKSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XG4gICAgICAgIGRlZmF1bHRXYXRjaE1hbmFnZXIud2F0Y2hTZXR0aW5nKHRoaXMucHJvcHMubmFtZSwgdGhpcy5wcm9wcy5yb29tSWQgPz8gbnVsbCwgdGhpcy5vblNldHRpbmdDaGFuZ2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb21wb25lbnRXaWxsVW5tb3VudCgpOiB2b2lkIHtcbiAgICAgICAgZGVmYXVsdFdhdGNoTWFuYWdlci51bndhdGNoU2V0dGluZyh0aGlzLm9uU2V0dGluZ0NoYW5nZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZXR0aW5nVmFsdWUoKTogYm9vbGVhbiB7XG4gICAgICAgIC8vIElmIGEgbGV2ZWwgZGVmaW5lZCBpbiBwcm9wcyBpcyBvdmVycmlkZGVuIGJ5IGEgbGV2ZWwgYXQgYSBoaWdoIHByZXNlZGVuY2UsIGl0IGdldHMgZGlzYWJsZWRcbiAgICAgICAgLy8gYW5kIHdlIHNob3VsZCBzaG93IHRoZSBvdmVycmlkZGluZyB2YWx1ZS5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgU2V0dGluZ3NTdG9yZS5zZXR0aW5nSXNPdmVyaWRkZW5BdENvbmZpZ0xldmVsKHRoaXMucHJvcHMubmFtZSwgdGhpcy5wcm9wcy5yb29tSWQgPz8gbnVsbCwgdGhpcy5wcm9wcy5sZXZlbClcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gISFTZXR0aW5nc1N0b3JlLmdldFZhbHVlKHRoaXMucHJvcHMubmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICEhU2V0dGluZ3NTdG9yZS5nZXRWYWx1ZUF0KFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5sZXZlbCxcbiAgICAgICAgICAgIHRoaXMucHJvcHMubmFtZSxcbiAgICAgICAgICAgIHRoaXMucHJvcHMucm9vbUlkID8/IG51bGwsXG4gICAgICAgICAgICB0aGlzLnByb3BzLmlzRXhwbGljaXQsXG4gICAgICAgICk7XG4gICAgfVxuICAgIHByaXZhdGUgb25TZXR0aW5nQ2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmdldFNldHRpbmdWYWx1ZSgpLFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBvbkNoYW5nZSA9IGFzeW5jIChjaGVja2VkOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2F2ZShjaGVja2VkKTtcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHZhbHVlOiBjaGVja2VkIH0pO1xuICAgICAgICB0aGlzLnByb3BzLm9uQ2hhbmdlPy4oY2hlY2tlZCk7XG4gICAgfTtcblxuICAgIHByaXZhdGUgY2hlY2tCb3hPbkNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50Pik6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKGUudGFyZ2V0LmNoZWNrZWQpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIHNhdmUgPSBhc3luYyAodmFsPzogYm9vbGVhbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgICBhd2FpdCBTZXR0aW5nc1N0b3JlLnNldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5uYW1lLFxuICAgICAgICAgICAgdGhpcy5wcm9wcy5yb29tSWQgPz8gbnVsbCxcbiAgICAgICAgICAgIHRoaXMucHJvcHMubGV2ZWwsXG4gICAgICAgICAgICB2YWwgIT09IHVuZGVmaW5lZCA/IHZhbCA6IHRoaXMuc3RhdGUudmFsdWUsXG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIHB1YmxpYyByZW5kZXIoKTogUmVhY3QuUmVhY3ROb2RlIHtcbiAgICAgICAgY29uc3QgZGlzYWJsZWQgPSAhU2V0dGluZ3NTdG9yZS5jYW5TZXRWYWx1ZSh0aGlzLnByb3BzLm5hbWUsIHRoaXMucHJvcHMucm9vbUlkID8/IG51bGwsIHRoaXMucHJvcHMubGV2ZWwpO1xuXG4gICAgICAgIGlmIChkaXNhYmxlZCAmJiB0aGlzLnByb3BzLmhpZGVJZkNhbm5vdFNldCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnByb3BzLmxhYmVsID8/IFNldHRpbmdzU3RvcmUuZ2V0RGlzcGxheU5hbWUodGhpcy5wcm9wcy5uYW1lLCB0aGlzLnByb3BzLmxldmVsKTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBTZXR0aW5nc1N0b3JlLmdldERlc2NyaXB0aW9uKHRoaXMucHJvcHMubmFtZSk7XG4gICAgICAgIGNvbnN0IHNob3VsZFdhcm4gPSBTZXR0aW5nc1N0b3JlLnNob3VsZEhhdmVXYXJuaW5nKHRoaXMucHJvcHMubmFtZSk7XG5cbiAgICAgICAgaWYgKHRoaXMucHJvcHMudXNlQ2hlY2tib3gpIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94IGNoZWNrZWQ9e3RoaXMuc3RhdGUudmFsdWV9IG9uQ2hhbmdlPXt0aGlzLmNoZWNrQm94T25DaGFuZ2V9IGRpc2FibGVkPXtkaXNhYmxlZH0+XG4gICAgICAgICAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteF9TZXR0aW5nc0ZsYWdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzTmFtZT1cIm14X1NldHRpbmdzRmxhZ19sYWJlbFwiIGh0bWxGb3I9e3RoaXMuaWR9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwibXhfU2V0dGluZ3NGbGFnX2xhYmVsVGV4dFwiPntsYWJlbH08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICB7ZGVzY3JpcHRpb24gJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXhfU2V0dGluZ3NGbGFnX21pY3JvY29weVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvdWxkV2FyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBfdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwic2V0dGluZ3N8d2FybmluZ1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdzogKHN1YikgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJteF9TZXR0aW5nc1RhYl9taWNyb2NvcHlfd2FybmluZ1wiPntzdWJ9PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPFRvZ2dsZVN3aXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e3RoaXMuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXt0aGlzLnN0YXRlLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3RoaXMub25DaGFuZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwPXtkaXNhYmxlZCA/IFNldHRpbmdzU3RvcmUuZGlzYWJsZWRNZXNzYWdlKHRoaXMucHJvcHMubmFtZSkgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17bGFiZWwgPz8gdW5kZWZpbmVkfVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFTQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxhQUFBLEdBQUFELE9BQUE7QUFFQSxJQUFBRSxjQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxnQkFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksYUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssZUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQU0sU0FBQSxHQUFBTixPQUFBO0FBakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBNkJlLE1BQU1PLFlBQVksU0FBU0MsY0FBSyxDQUFDQyxTQUFTLENBQWlCO0VBRy9EQyxXQUFXQSxDQUFDQyxLQUFhLEVBQUU7SUFDOUIsS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFBQyxJQUFBQyxnQkFBQSxDQUFBQyxPQUFBLGNBSEssbUJBQW1CLElBQUFDLDBCQUFZLEVBQUMsRUFBRSxDQUFDLEVBQUU7SUFBQSxJQUFBRixnQkFBQSxDQUFBQyxPQUFBLDJCQWlDakMsTUFBWTtNQUNsQyxJQUFJLENBQUNFLFFBQVEsQ0FBQztRQUNWQyxLQUFLLEVBQUUsSUFBSSxDQUFDQyxlQUFlLENBQUM7TUFDaEMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUFBLElBQUFMLGdCQUFBLENBQUFDLE9BQUEsb0JBRWtCLE1BQU9LLE9BQWdCLElBQW9CO01BQzFELE1BQU0sSUFBSSxDQUFDQyxJQUFJLENBQUNELE9BQU8sQ0FBQztNQUN4QixJQUFJLENBQUNILFFBQVEsQ0FBQztRQUFFQyxLQUFLLEVBQUVFO01BQVEsQ0FBQyxDQUFDO01BQ2pDLElBQUksQ0FBQ1AsS0FBSyxDQUFDUyxRQUFRLEdBQUdGLE9BQU8sQ0FB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Q0lyRCxNQUFBLENBQUFlLE9BQUEsQ0FBQXVDLGFBQUEsQ0FBQy9DLGVBQUEsQ0FBQVEsT0FBYztRQUFDSyxPQUFPLEVBQUUsSUFBSSxDQUFDWSxLQUFLLENBQUNkLEtBQU07UUFBQ0ksUUFBUSxFQUFFLElBQUksQ0FBQ2lDLGdCQUFpQjtRQUFDWCxRQUFRLEVBQUVBO01BQVMsR0FDMUZHLEtBQ1csQ0FBQztJQUV6QixDQUFDLE1BQU07TUFDSCxvQkFDSS9DLE1BQUEsQ0FBQWUsT0FBQSxDQUFBdUMsYUFBQTtRQUFLRSxTQUFTLEVBQUM7TUFBaUIsZ0JBQzVCeEQsTUFBQSxDQUFBZSxPQUFBLENBQUF1QyxhQUFBO1FBQU9FLFNBQVMsRUFBQyx1QkFBdUI7UUFBQ0MsT0FBTyxFQUFFLElBQUksQ0FBQ0M7TUFBRyxnQkFDdEQxRCxNQUFBLENBQUFlLE9BQUEsQ0FBQXVDLGFBQUE7UUFBTUUsU0FBUyxFQUFDO01BQTJCLEdBQUVULEtBQVksQ0FBQyxFQUN6REUsV0FBVyxpQkFDUmpELE1BQUEsQ0FBQWUsT0FBQSxDQUFBdUMsYUFBQTtRQUFLRSxTQUFTLEVBQUM7TUFBMkIsR0FDckNMLFVBQVUsR0FDTCxJQUFBUSxtQkFBRSxFQUNFLGtCQUFrQixFQUNsQixDQUFDLENBQUMsRUFDRjtRQUNJQyxDQUFDLEVBQUdDLEdBQUcsaUJBQ0g3RCxNQUFBLENBQUFlLE9BQUEsQ0FBQXVDLGFBQUE7VUFBTUUsU0FBUyxFQUFDO1FBQWtDLEdBQUVLLEdBQVUsQ0FDakU7UUFDRFo7TUFDSixDQUNKLENBQUMsR0FDREEsV0FDTCxDQUVOLENBQUMsZUFDUmpELE1BQUEsQ0FBQWUsT0FBQSxDQUFBdUMsYUFBQSxDQUFDaEQsYUFBQSxDQUFBUyxPQUFZO1FBQ1QyQyxFQUFFLEVBQUUsSUFBSSxDQUFDQSxFQUFHO1FBQ1p0QyxPQUFPLEVBQUUsSUFBSSxDQUFDWSxLQUFLLENBQUNkLEtBQU07UUFDMUJJLFFBQVEsRUFBRSxJQUFJLENBQUNBLFFBQVM7UUFDeEJzQixRQUFRLEVBQUVBLFFBQVM7UUFDbkJrQixPQUFPLEVBQUVsQixRQUFRLEdBQUdsQixzQkFBYSxDQUFDcUMsZUFBZSxDQUFDLElBQUksQ0FBQ2xELEtBQUssQ0FBQ2UsSUFBSSxDQUFDLEdBQUdHLFNBQVU7UUFDL0VpQyxLQUFLLEVBQUVqQixLQUFLLElBQUloQjtNQUFVLENBQzdCLENBQ0EsQ0FBQztJQUVkO0VBQ0o7QUFDSjtBQUFDa0MsT0FBQSxDQUFBbEQsT0FBQSxHQUFBTixZQUFBIiwiaWdub3JlTGlzdCI6W119